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
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.
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.