事件激活时将数据从 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 以传递更多信息。