问题
Hi. I have a UserControl which contains a textbox. I wanted to access the textchanged event of the textbox but in the event properties of the usercontrol I don\'t see the events for the textbox. How can I expose and handle particular events of the child controls from the publicly exposed UserControl in Winforms with C#.
回答1:
You can surface a new event and pass any subscriptions straight through to the control, if you like:
public class UserControl1 : UserControl
{
// private Button saveButton;
public event EventHandler SaveButtonClick
{
add { saveButton.Click += value; }
remove { saveButton.Click -= value; }
}
}
回答2:
Expose the entire TextBox as a public property in user control and subscribe to it's events the way you desire.
Example:
class myUserControl: UserControl {
private TextBox _myText;
public TextBox MyText { get {return _myText; } }
}
After doing this you can subscribe on any of its events like so:
theUserControl.MyText.WhatEverEvent += ...
Hope this helps!
来源:https://stackoverflow.com/questions/943171/expose-and-raise-event-of-a-child-control-in-a-usercontrol-in-c-sharp