我有一个继承自 Form 的基类,它在所示上注册了一个事件处理程序:
class BaseClass : Form {
public BaseClass() : base() {
Shown += new EventHandler(BaseClass_Shown);
}
void BaseClass_Shown(object sender, EventArgs e) {
Close();
MessageBox.Show("This cannot be opened.");
}
}
现在,当我对这个表单进行子类化并在设计器中打开它时,我实际上收到了该消息,并且它在设计器中关闭了表单,使得我无法对其进行可视化编辑。
我是否可以使用一些布尔值来防止Close()
and MessageBox
即将发生?
(小背景:Close
并不总是被调用,而是取决于一些运行时设置和数据)
有些事件也在设计器中触发,这赋予了 Winforms 设计器所见即所得的能力。值得注意的是,Paint、Shown 也被烧毁等等。提供 DesignMode 属性可让您判断事件处理程序是否在设计时运行。使固定:
void BaseClass_Shown(object sender, EventArgs e) {
if (!this.DesignMode) {
Close();
MessageBox.Show("This cannot be opened.");
}
}
请注意您的方法中的缺陷,此事件也会针对派生形式触发。你可能帮的太多了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)