代码之家  ›  专栏  ›  技术社区  ›  Kevin Kibler

如何让Windows窗体设计器使用来自外部程序集的资源?

  •  8
  • Kevin Kibler  · 技术社区  · 14 年前

    // in an assembly named ResourceConsumer
    this.button1.Image = global::ResourceConsumer.Properties.Resources.Close32x32;
    

    // ResourceProducer is an external assembly containing resources
    this.button1.Image = global::ResourceProducer.Properties.Resources.Exit32x32;
    

    this.button1.Image = ((System.Drawing.Image)(resources.GetObject("button1.Image")));
    

    Windows窗体设计器似乎理解从同一程序集中(而不是从外部)提取资源。有没有办法让Windows窗体设计器允许我使用来自外部程序集的资源?

    2 回复  |  直到 14 年前
        1
  •  2
  •   Hans Passant    14 年前

    不,设计师不支持这个。重要的是,它的工作方式,通过卫星组件的本地化将不会工作,否则。

    你可以这样做,但你必须自己写代码。几乎和你在资源.Designer.cs文件。一定要考虑这是否值得付出努力,因为它不太易维护,共享资源程序集也不是什么优化。一个太字节的磁盘不到一百美元。

    顺便说一句: 从未 编辑资源.Designer.cs归档。

        2
  •  3
  •   Community c0D3l0g1c    7 年前

    我有确切的答案 same problem 根据您的代码库,可能还有另一种方法。如果已修改以引用特定资源的属性位于自定义控件上,则可以添加 [[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] 属性(如果需要,重写或隐藏它们),设计器将不处理它们。

    但是,如果属性位于基本UI元素上(例如。表格背景图片)然后你就不得不覆盖或隐藏这些,我不知道这是多么可取。