将从用户控件中选择的值传递给父控件
本文关键字:控件 值传 选择 用户 | 更新日期: 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
}
}