C# 如何实现此事件以更新其他表单上的文本框?

C# 如何实现此事件以更新其他表单上的文本框?,c#,events,textbox,listbox,C#,Events,Textbox,Listbox,Form1有一个文本框和一个按钮,按钮打开form2。form2上有一个链接到文本框的列表框。当我在文本框中键入并按enter键时,它的文本内容将添加到form2的列表框中。我想单击form2列表框中的一个项目,并将form1文本框中的文本更改为我在列表框中选择的文本。 我需要使用一个事件来实现这一点,但有一点我不知道下一步该做什么 下面是我制作的eventargs类: // this event argument will contain the string clicked // in th

Form1有一个文本框和一个按钮,按钮打开form2。form2上有一个链接到文本框的列表框。当我在文本框中键入并按enter键时,它的文本内容将添加到form2的列表框中。我想单击form2列表框中的一个项目,并将form1文本框中的文本更改为我在列表框中选择的文本。 我需要使用一个事件来实现这一点,但有一点我不知道下一步该做什么

下面是我制作的eventargs类:

// this event argument will contain the string clicked
// in the history listbox
public class ListBoxIndexChangedEventArgs : EventArgs
{
    private readonly string _clickedText = "";

    public string ClickedText { get; }

    public ListBoxIndexChangedEventArgs(string str)
    {
        this._clickedText = str;
    }
}
在我的form2类(事件将在其中引发)中,我声明了我的事件:

public event EventHandler<ListBoxIndexChangedEventArgs> ListBoxIndexChanged;
然后,在表单2中列表框的SelectedIndexChanged事件中,我添加了:

OnListBoxIndexChanged(new ListBoxIndexChangedEventArgs(lstbHistory.Text));
我不知道下一步该怎么做,我知道我应该以一种特殊的方式打开第一个表单,这样它就可以监听事件,但我就是无法集中注意力

任何帮助都将不胜感激,
谢谢

您已经找到了关键部分。唯一剩下的事情是在创建form2之后,在显示它之前,添加一个事件处理程序,如:
form2.ListBoxIndexChanged+=(s,e)=>{//do sth with e.ClickedText}
;我一定是做错了什么,因为当我包含您的代码时,什么也没有发生。
public ListBoxIndexChangedEventArgs(string str){this.ClickedText=str;}
<代码>受保护的虚拟void OnListBoxIndexChanged(ListBoxIndexChangedEventArgs e){ListBoxIndexChanged?.Invoke(this,e);}。不过,您可以使用数据绑定。textbox是listbox的数据源,我如何使用它同时单击listbox并将其发送到textbox?
OnListBoxIndexChanged(new ListBoxIndexChangedEventArgs(lstbHistory.Text));