在Visual Studio Designer中为控件指定双击事件

11

当你在 Visual Studio 的设计器中双击一个 Control 控件时,会自动订阅一些事件,并在代码后台文件中生成事件处理程序。

双击以下控件将订阅相应的事件:

  • UserControl - Loaded
  • Button - Click
  • TextBox - TextChanged
  • Grid - 没有事件
    等。

这是如何指定的?是 Visual Studio 的设置吗?是否可以覆盖这个默认行为,并指定想要将双击事件链接到哪个事件处理程序,例如自定义控件?

谢谢。

2个回答

15

控件可以指定一个名为DefaultEventAttribute的属性,设计器会读取该属性并使用它来确定默认使用哪个事件。

[DefaultEvent("DoubleClick")]
public class MyClass {

    public event EventHandler DoubleClick;

}

还有一个 DefaultPropertyAttribute,但它的用处要少得多。它只是确定在设计者中选择控件时,属性网格中要选择的默认属性名称。


如果你想让最终用户双击控件来访问功能,那么请使用“DoubleClick”而不是“Click”。 - aaaa bbbb
谢谢!我在使用Reflector查看TextBox时没有看到这个,只看到了ContentProperty("Text")等。不管怎样,DefaultPropertyAttribute的额外加分,一举两得 :) - Fredrik Hedblad

0

如果想要在编辑器中进行此操作。
对于VS2017(并且我怀疑以后的版本也是),在设计器中:

  • 选择窗体上的控件
  • 在“属性”窗口中,选择“事件”图标
  • 会显示该控件可用的事件列表
  • 双击所需事件的名称。

这也适用于删除自动生成的代码。删除该事件的事件处理程序名称即可。它将从*.designer.cs文件中删除。请注意,您仍需要在窗体源代码中删除处理程序代码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接