Windows窗体设计器删除我的代码

时间:2011-03-12 18:41:38

标签: c# winforms visual-studio

我设计了一些与工具条一起使用的自定义控件,因此我将子类化为ToolStripControlHost。在这种情况下,复选框...我的代码如下所示:

public class ToolStripCheckBox : ToolStripControlHost
{
    public ToolStripCheckBox()
        : base(new CheckBox())
    {
    }

    public CheckBox CheckBoxControl
    {
        get
        {
            return Control as CheckBox;
        }
    }
}

当我在Form1.Designer.cs文件中输入它们时,它们可以正常工作,但是当我在设计器中进行修改时,我的一些自定义代码会从Form1.Designer.cs中消失,更具体地说是事件处理程序和自定义外观。例如,这条线消失了

this.boldCheckBox.CheckBoxControl.Appearance = System.Windows.Forms.Appearance.Button;

这有点烦人,我不知道该怎么做: - (

2 个答案:

答案 0 :(得分:7)

Form1.Designer.cs由Designer维护,不应更改。这些任务将在Form1.cs的构造函数中执行,紧接在“InitializeComponent”函数之后(它甚至会说// TODO: Add initialization code here或类似的东西)。

或者,您可以使用完整的设计时支持对自定义控件进行编码。

答案 1 :(得分:1)

此代码不属于Designer.cs文件,设计人员会吃掉它。它也不属于表单源代码文件,只应该在那里写入与表单类相关的代码。项目+添加课程。编译后会自动添加到工具箱中。