【问题标题】:Shared data for component property at design time设计时组件属性的共享数据
【发布时间】:2012-10-23 07:20:09
【问题描述】:

我有一个实现IExtenderProvider 的组件。一个属性包含对于用户在其项目中使用的组件的每个实例都应该相同的设置。 (也可以在每个实例中编辑)

在设计时共享多个用户控件实例的信息的常用方法是什么?手动将其写入app.config 是没有解决方案的,因为我需要一个 GUI 来进行此设置。

提前致谢

Findnix

如果只是在设计时需要该属性,则提到的静态属性非常有用,但在我的情况下,在运行时也需要该属性。 在这种情况下,每个实例都将在其设计时设置的值设置为静态属性。这意味着该值取决于实例的初始化顺序。

例子:

在设计时:

将组件添加到表单1并将值设置为“Form1”

将组件添加到表单2并将值设置为“Form2”

现在这两个实例的设计器中的值都是“Form2”, 但是在运行时,如果两种形式都被加载,值总是那个 作为最后一个加载。

这是因为设计者没有改变实例的初始化值。

【问题讨论】:

  • 您可以不将属性值存储在实例变量中,而是存储在静态变量中。这肯定有助于在实例之间共享相同的值。

标签: c# winforms visual-studio controls design-time


【解决方案1】:

要为每个实例和创建一个所有实例通用的属性,您可以执行以下操作:

class MyObject
{
    // static members are common to all instances
    static string DefaultProperty1 = "Some Default";

    private string _Property1;
    public string Property1
    {
        get
        {
            // If the backing field is NULL, return the default
            if (_Property1 == null)
                return DefaultProperty1;
            // Otherwise, return the per-instance value
            return _Property1;
        }
        set { _Property1 = value; }
    }
}

DefaultProperty1 也可以是一个属性,如果您希望它是可更改的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-25
    • 2017-09-16
    • 2018-03-01
    • 2017-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多