如何使用事件处理程序将数据从一种形式转移到另一种形式

时间:2019-06-07 09:49:33

标签: c# winforms events

我正在创建Windows Forms Application,该应用程序被称为单例程序设计。 这是使用带有不同选项的主窗体供用户选择的。 这些选项依次具有各自的形式和附加的独特功能。 当执行主表单并且用户选择一个选项时,该选项表单将被隐藏 远离用户(反对关闭),直到再次选择。注意..它没有关闭。

我有一个带有多格式文本框的表单,在检查了内容的有效性之后,我想将该数据发送到另一个具有列表视图框的表单中……基本上在另一种表单上更新了列表视图框。

我所见过的所有示例都创建了新的表单实例,这对我而言并不理想。...(因为我的表单已经打开)

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

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已获得数据,我想将其发送到具有列表视图框的viewRegisterForm。发布的代码位于NewDriverForm

预先感谢...非常感谢您的帮助

1 个答案:

答案 0 :(得分:1)

您可以在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
}