阻止设计师调用getter(VS 2008,WinForms)

时间:2010-03-18 14:26:50

标签: visual-studio winforms user-controls

我有一个简单的UserControl包含一个最初为空的ComboBox。该CB的setter向其添加项目,getter返回所选项目。将此UC添加到表单时,设计人员会自动调用空的CB的getter。用项填充CB的方法稍后调用。我可以想到一两种方法可以通过代码中的“乱七八糟”来绕过这个问题。但在我开始之前,我想问你是否有办法阻止设计师调用getter方法。也许使用类似于Browsable或Bindable的属性? THX

2 个答案:

答案 0 :(得分:1)

试试这个:

public ListBoxItem MyProperty
{
    get
    {
        if (this.DesignMode)
        {
            return new ListBoxItem("empty");
        }
        else
        {
            return comboBox1.SelectedItems[0];
        }
    }
}

仍会调用getter,但您可以控制此处返回的内容。

或者,我认为将[Browsable (false)]属性放在getter之上也可能有效,但我不确定。

答案 1 :(得分:1)

我不清楚这个吸气剂是什么样的。但是,您希望确保设计器不会序列化只应在运行时使用的属性。使用属性执行此操作:

    [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
    [Browsable(false)]
    public int SomeProperty { 
        //etc... 
    }