How do i raise an event in a usercontrol and catch it in mainpage?

前端 未结 3 424
小鲜肉
小鲜肉 2020-12-02 06:58

I have a UserControl, and I need to notify the parent page that a button in the UserControl was clicked. How do I raise an event in the UserC

相关标签:
3条回答
  • 2020-12-02 07:27

    Check out Event Bubbling -- http://msdn.microsoft.com/en-us/library/aa719644%28vs.71%29.aspx

    Example:

    User Control

    public event EventHandler StatusUpdated;
    
    private void FunctionThatRaisesEvent()
    {
        //Null check makes sure the main page is attached to the event
        if (this.StatusUpdated != null)
           this.StatusUpdated(this, new EventArgs());
    }
    

    Main Page/Form

    public void MyApp()
    {
         //USERCONTROL = your control with the StatusUpdated event
         this.USERCONTROL.StatusUpdated += new EventHandler(MyEventHandlerFunction_StatusUpdated);
    }
    
    public void MyEventHandlerFunction_StatusUpdated(object sender, EventArgs e)
    {
             //your code here
    }
    
    0 讨论(0)
  • 2020-12-02 07:31

    Or if you are looking for a more decoupled solution you can use a messenger publisher / subscriber model such as MVVM Light Messenger here

    0 讨论(0)
  • 2020-12-02 07:41

    Just add an event in your control:

    public event EventHandler SomethingHappened;
    

    and raise it when you want to notify the parent:

    if(SomethingHappened != null) SomethingHappened(this, new EventArgs);
    

    If you need custom EventArgs try EventHandler<T> instead with T beeing a type derived from EventArgs.

    0 讨论(0)
提交回复
热议问题