Visual Studio 更改控件 属性 只要表单有任何更改

Visual Studio changes control property whenever there any changes in form

我正在开发 winforms 应用程序。我有一个名为 "MainForm" 的表单,其中包含用户控件。用户控件中有一个复选框,在某些情况下应该隐藏它 - 这就是为什么我为它制作了 属性。问题是每当我打开主窗体并在其中进行任何更改时,设计器都会将 属性 更改为 false,因此控件中的复选框不可见。

有什么办法可以防止这种行为吗? (我使用的是 VS2012)

更新:

在我控制的代码隐藏中我有一个属性

 public bool IsWebOmmitVisable
    {
        get { return ommitCheckBox.Visible; }
        set { ommitCheckBox.Visible = value; }
    }

在control的构造函数中我设置为true:

 public myControl()
    {
        InitializeComponent();
        IsWebOmmitVisable = true;
...

不过看起来无所谓。
然后我将此控件添加到 MainForm。 属性 在控件属性中可见。但是,每当我修改 MainForm 中的任何元素时,属性 都会设置为 false。

http://i.stack.imgur.com/0fSvQ.jpg

在主窗体的属性window select class中,然后点击事件选项卡(闪电图标)然后双击加载事件,这将添加一个在表单中加载事件,在这里你可以根据需要为复选框控件设置可见为假或真

    private void MainForm_Load(object sender, EventArgs e)
    {
        mycheckbox.Visible = false;
    }

simple form image

和Form1.cs

中的代码
private void Form1_Load(object sender, EventArgs e)
{
    textBox1.Visible = false;
}

private void button1_Click(object sender, EventArgs e)
{
    textBox1.Visible = !textBox1.Visible;
}

而且它可以完美地工作。 (按钮切换文本框的 Visible 属性。)我不确定你在哪一步出错了。

Form1_Load 是通过在设计器中双击表单标题自动生成的。

button1_Click 是通过双击设计器中的按钮 1 自动生成的。

使用 DesignerSerializationVisibilityAttribute 将阻止 属性 在设计器中序列化。

   [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
    public bool IsWebOmmitVisable
    {
        get { return ommitCheckBox.Visible; }
        set { ommitCheckBox.Visible = value; }
    }

来自link:

With the DesignerSerializationVisibilityAttribute, you can indicate whether the value for a property is Visible, and should be persisted in initialization code, Hidden, and should not be persisted in initialization code, or consists of Content, which should have initialization code generated for each public, not hidden property of the object assigned to the property. Members that do not have a DesignerSerializationVisibilityAttribute will be treated as though they have a DesignerSerializationVisibilityAttribute with a value of Visible. The values of a property marked as Visible will be serialized, if possible, by a serializer for the type. To specify custom serialization for a particular type or property, use the DesignerSerializerAttribute.