Specify Double-Click event for a Control in Visual

2020-02-26 08:51发布

问题:

When you Double-Click on a Control in the Visual Studio Designer, you automatically subscribe to some event and an Event Handler is generated in the code behind file.

Double-Clicking on the following Controls subscribes to the corresponding event

  • UserControl - Loaded
  • Button - Click
  • TextBox - TextChanged
  • Grid - No event
    etc.

How is this specified, is it a Visual Studio setting? Can this be overrideen and how can you specify which event you want to link to Double-Click for e.g. a Custom Control?

Thanks

回答1:

There is a DefaultEventAttribute that controls can specify. The designer knows to read this attribute and uses it to determine which event to use as the default.

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

    public event EventHandler DoubleClick;

}

There is also a DefaultPropertyAttribute which is significantly less useful. It just determines the default property name to select in the property grid when the control is selected in the designer.



回答2:

If wanting to do this in the editor.
For VS2017 (and beyond I suspect). In Designer:

  • Select the control on the form
  • In the Properties Window, select the Events icon
  • The list of available events for that control will be shown
  • Double-click the name of the desired event.

This also works for deleting the auto-generated code. Remove the name of the event handler for that event. It will get removed from the *.designer.cs file. Note that you still need to remove the handler code in the form source.