删除WinForm控件的原始事件行为
本文关键字:事件 原始 WinForm 控件 删除 | 更新日期: 2023-09-27 18:07:57
我想删除窗体内控件的原始事件行为(类似于设计模式)。因此,当用户单击按钮时,我只想捕获该事件。我不希望触发原始按钮事件。这有可能吗?我正在寻找一个通用的解决方案。因此,它应该适用于任何表单和表单中的任何控件。
原因:我写了一个表单验证规则设计器。它使用反射枚举条目程序集中的所有表单类型。然后,用户可以选择表单类型,设计器创建该表单,枚举控件,并将表单嵌入设计器面板中。单击控件,打开一个公式设计器面板,用户现在可以为该控件创建一个公式,并将公式保存到数据库中。当表单以正常的"运行时"模式打开时,它会加载验证公式。事件实际上并没有在Winforms设计器中被禁用。设计器通过反射执行表单的构造函数,InitializeComponent()方法中的所有内容都将执行,包括事件订阅。在可能导致问题的地方,控件检查DesignMode属性(例如阻止计时器启动)或由自定义设计器检查。窗体显示在一个透明的分层窗口下面,选择矩形和拖动手柄被绘制在该窗口的顶部。这可以防止鼠标点击和键盘聚焦的问题。
你可能应该看看这篇杂志文章,让它为你工作。
根据我对你的问题的理解,我猜,你仍然可以使用"DesignMode"属性来实现这一点。在事件处理例程中,您可能希望通过检查以下属性来绕过执行:
if (this.DesignMode) return;
作为事件处理代码块中的第一个语句