c# - 如何使用事件处理程序将数据从一种形式传输到另一种形式

标签 c# winforms events

我正在创建 Windows 窗体应用程序,相信被称为单例程序设计。 这是使用具有不同选项的主窗体供用户选择。 这些选项又都有其相应的形式,并附有独特的功能。 当主窗体执行并且用户选择一个选项时,选项窗体随后被隐藏 远离用户(而不是关闭)直到再次被选中。注意..它没有关闭。

我有一个带有富文本框的表单,在检查内容有效性后,我想将该数据发送到另一个有 ListView 框的表单...基本上更新另一个表单上的 ListView 框。

我看到的所有示例都会创建新的表单实例,这对我来说并不理想....(因为我的表单已经打开)

这就是我到目前为止所得到的......

public delegate void EventDelegate(Object sender, EventArgs e);

public event EventDelegate MessageForListView;

if (status == 0)
{               
  value = value.ToLower();
  using (StreamWriter sw = File.AppendText(path))
  {
      sw.WriteLine(value + " " + datestamp);
      MessageBox.Show(value.ToString() + " is now registered....... ");

     /// message event required here to pass back value and datestamp to the form holding the ListViewBox

      MessageForListViewEvent += NewDriverForm_MessageForListViewEvent;

      ReSetInput();
  }
}


private void NewDriverForm_MessageForListViewEvent(object sender, EventArgs e){

 /// how do I write the data into the ListViewBox or call the reload procedure again.

}

NewDriverForm 已获取数据,我想将其发送到具有 ListView 框的 viewRegisterForm。发布的代码位于 NewDriverForm

提前致谢...非常感谢您的帮助

最佳答案

您可以在 NewDriverForm 中创建一个静态事件并指定您要发送的数据类型:

public static EventHandler<TypeOfDataToBeSend> MessageForListView; 

并将数据传递到调用中:

MessageForListView?.Invoke(this, objectOfYourDataType);

现在在 viewRegisterForm 中注册此事件,并在已注册的事件方法中提取此信息:

NewDriverForm.MessageForListView += NewDriverForm_MessageForListViewEvent;


public void NewDriverForm_MessageForListViewEvent(object sender, TypeOfDataToBeSend objectOfYourDataType)
{
      // use here the objectOfYourDataType
} 

关于c# - 如何使用事件处理程序将数据从一种形式传输到另一种形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56491979/

相关文章:

.net - Winforms ComboBox SelectedValueChange 事件

c# - 是否有必要取消订阅事件?

c# - 在大于 5000x3000 的桌面上绘制单个移动图像的最快方法?

c# - 在多线程应用中卡住

javascript - pointerdown vs onclick : what is the difference?

c++ - 使用 Bind 创建处理程序函数以处理单击的菜单项 - wxWidgets 3.0

c# - 使用 C# 删除新门户 Azure 上的现有 VHD

c# - VB.NET 比 C# 更便携吗?

c# - ASP.NET MVC3 Controller AOP 代理不拦截所有方法,只有 IController.Execute

c# - 如何在Winform中显示欢迎画面?