将从用户控件中选择的值传递给父控件

本文关键字:控件 值传 选择 用户 | 更新日期: 2023-09-27 18:10:48

我有一个Winform对话框,其中包含几个用户控件-它们都是某种Datagridview。主父类有关于用户的详细信息,每个用户控件都有关于该用户的附加详细信息。当我的对话框第一次加载所有的UserControls工作,但我试图找出如何更新UserControl2基于UserControl1的位置变化。

所以,我试图在UserControl1中选择一行,并根据我刚刚选择的值更新UserControl2中的数据。

我试过在UserControl1和BindingSourcePositionChanged上使用MouseDownEvents,但我不知道如何将选择的值返回到我的父窗体,然后使用该值刷新其他数据格?

我看了代表和活动,但我想睡眠不足让人难以理解。我明白我需要在UserControl1上创建我的委托和事件,然后以某种方式在我的mainform上调用它,但这就是我卡住的地方,不知道从哪里开始。

这个方向对吗?还是有别的办法来完成?有人能就这是如何工作的提出任何建议吗?

将从用户控件中选择的值传递给父控件

是的,这是正确的方法,下面类似的东西将提供一个事件处理程序,您可以使用它从UserControl检索公共属性:

public class SomeClass : BaseControl
{
    public event EventHandler PersonSelected;
    public string Name{get;set;}
    protected void FindUser()
    {
        var find = new Button {ID = (ToString() + "search"), Text = "Search"};
            find.Click += delegate(object sender, EventArgs e)
                              {
                                  if (PersonSelected!= null)
                                  {
                                      //forward this event to the page's event handler
                                      PersonSelected(this, e);
                                  }
                              }; 
     }
}
public class SomeOtherClass : Page
{
    public void Main()
    {
       var sp = (SomeClass)Control;
                        sp.PersonSelected += BtnClick;
     }
    public void BtnClick(object sender, EventArgs e)
    {
        //Get some value from the (SomeClass)Control here
     }
}