设计时组件属性的共享数据

时间:2012-11-02 15:40:41

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

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

在设计时通过多个用户控件实例共享信息的常用方法是什么?手动将其写入app.config是不可能的,因为我需要一个用于此设置的GUI。

提前致谢

Findnix

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

示例:

在设计时:

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

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

现在,两个实例的设计器中的值为“Form2”, 但是在运行时如果两个表单都被加载,那么值就是那个 被装上了最后一个。

这是因为设计人员不会更改实例的初始化值。

1 个答案:

答案 0 :(得分:0)

要创建每个实例的所有实例共有的属性,您可以执行以下操作:

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也可以是属性。