事件激活时将数据从 userControl 传递到表单
passing data from userControl to form when event is activated
我不知道如何用事件传递数据!
在表单内部,我有 UserControls 列表,每个 UserControl 都有 ComboBox。
在组合框的 SelectedValueChanged 上,事件被调用并传递给主窗体。
这是我来自 userControl
的代码
public event EventHandler SelectedStatusValueChanged;
private void cmbPromjenaStanja_SelectedValueChanged(object sender, EventArgs e)
{
if (SelectedStatusValueChanged != null)
{
SelectedStatusValueChanged(sender, e);
}
}
这是我用来获取主窗体事件通知的代码
//placed in rand function
userControlInstance.SelectedStatusValueChanged += new EventHandler(ucNarudzba_SelectedStatusValueChanged);
private void ucNarudzba_SelectedStatusValueChanged(object sender, EventArgs e)
{
// I don't know how to get specific data from user control here so i can use it in form
}
抱歉代码不是英文的!!
感谢您的帮助!!!
通过事件传递值的一种方法是创建自定义 EventArgs class。
public class CustomEventArgs : EventArgs
{
public string EditValue { get; set; }
}
在事件处理程序中使用此 class 并在触发用户控件中的事件之前设置 属性 值。
private void cmbPromjenaStanja_SelectedValueChanged(object sender, EventArgs e)
{
if (SelectedStatusValueChanged != null)
{
SelectedStatusValueChanged(sender, new CustomEventArgs() {.EditValue = cmbPromjenaStanja.EditValue});
}
}
然后在您的主窗体中,您可以使用 e.EditValue
来检索值。您可以向自定义 EventArgs 添加任意数量的属性 class 以传递更多信息。
我不知道如何用事件传递数据!
在表单内部,我有 UserControls 列表,每个 UserControl 都有 ComboBox。
在组合框的 SelectedValueChanged 上,事件被调用并传递给主窗体。
这是我来自 userControl
public event EventHandler SelectedStatusValueChanged;
private void cmbPromjenaStanja_SelectedValueChanged(object sender, EventArgs e)
{
if (SelectedStatusValueChanged != null)
{
SelectedStatusValueChanged(sender, e);
}
}
这是我用来获取主窗体事件通知的代码
//placed in rand function
userControlInstance.SelectedStatusValueChanged += new EventHandler(ucNarudzba_SelectedStatusValueChanged);
private void ucNarudzba_SelectedStatusValueChanged(object sender, EventArgs e)
{
// I don't know how to get specific data from user control here so i can use it in form
}
抱歉代码不是英文的!!
感谢您的帮助!!!
通过事件传递值的一种方法是创建自定义 EventArgs class。
public class CustomEventArgs : EventArgs
{
public string EditValue { get; set; }
}
在事件处理程序中使用此 class 并在触发用户控件中的事件之前设置 属性 值。
private void cmbPromjenaStanja_SelectedValueChanged(object sender, EventArgs e)
{
if (SelectedStatusValueChanged != null)
{
SelectedStatusValueChanged(sender, new CustomEventArgs() {.EditValue = cmbPromjenaStanja.EditValue});
}
}
然后在您的主窗体中,您可以使用 e.EditValue
来检索值。您可以向自定义 EventArgs 添加任意数量的属性 class 以传递更多信息。