当您创建一个从 继承的控件时Control
,您必须使用几个属性,例如IsDesignMode
,然后您可以构造事件处理程序,特别是在设计模式中:
如果(IsDesignMode){
// 处理设计模式下的交互性,比如改变一个属性
// 属性工具箱
}
假设控件有一个事件如MouseClick
,你可以这样做:
private void control_MouseClick(对象发送者,MouseEventArgs e){
如果(IsDesignMode){
// 根据设计器中的 Click 事件在这里做一些事情
}别的{
// 这是在运行时...
}
}
我能想到的另一个是“ ShouldSerialize ”,后跟一个可公开访问的属性,以便将该属性保留到设计器生成的代码中,例如,假设 Control 具有布尔属性Foo
公共布尔 Foo{
得到{返回这个._foo; }
设置{ if (this._foo != value){
this._foo = 价值;
}
}
}
公共布尔应该SerializeFoo(){
返回真;// 该属性将保留在设计器生成的代码中
// 签入 Form.Designer.cs...
}
如果ShouldSerializeFoo
返回false,则不保留任何属性,如果为true,则相反,它将被埋在Form.Designer.cs代码中...
希望这会有所帮助,最好的问候,汤姆。