当你在 Visual Studio 的设计器中双击一个 Control
控件时,会自动订阅一些事件,并在代码后台文件中生成事件处理程序。
双击以下控件将订阅相应的事件:
UserControl
- LoadedButton
- ClickTextBox
- TextChangedGrid
- 没有事件
等。
这是如何指定的?是 Visual Studio 的设置吗?是否可以覆盖这个默认行为,并指定想要将双击事件链接到哪个事件处理程序,例如自定义控件?
谢谢。
当你在 Visual Studio 的设计器中双击一个 Control
控件时,会自动订阅一些事件,并在代码后台文件中生成事件处理程序。
双击以下控件将订阅相应的事件:
UserControl
- LoadedButton
- ClickTextBox
- TextChangedGrid
- 没有事件这是如何指定的?是 Visual Studio 的设置吗?是否可以覆盖这个默认行为,并指定想要将双击事件链接到哪个事件处理程序,例如自定义控件?
谢谢。
控件可以指定一个名为DefaultEventAttribute的属性,设计器会读取该属性并使用它来确定默认使用哪个事件。
[DefaultEvent("DoubleClick")]
public class MyClass {
public event EventHandler DoubleClick;
}
还有一个 DefaultPropertyAttribute,但它的用处要少得多。它只是确定在设计者中选择控件时,属性网格中要选择的默认属性名称。
如果想要在编辑器中进行此操作。
对于VS2017(并且我怀疑以后的版本也是),在设计器中:
这也适用于删除自动生成的代码。删除该事件的事件处理程序名称即可。它将从*.designer.cs文件中删除。请注意,您仍需要在窗体源代码中删除处理程序代码。
TextBox
时没有看到这个,只看到了ContentProperty("Text")
等。不管怎样,DefaultPropertyAttribute的额外加分,一举两得 :) - Fredrik Hedblad