当前位置: 首页 > 编程语言 > C#

c#两个窗体之间的事件处理分享

时间:2023-04-10 23:58:26 C#

c#两个窗体之间的事件处理我有两个窗体,我试图在frmEventReceive.cs中捕获frmEventGenerate.cs产生的事件。在这个例子中,我可以从frmEventGenerate.cs接收事件,但不知道如何在frmEventReceive.cs中捕获它?frmEventReceive.cs是我创建frmEventGenerate.cs的启动窗体。有人能指出我正确的方向,我想我是愚蠢的!谢谢frmEventGenerate.cs:usingSystem;使用System.Collections.Generic;使用System.ComponentModel;使用系统数据;使用系统绘图;使用System.Linq;使用系统文本;使用System.Windows.Forms;命名空间事件{publicdelegatevoidLinkToEventHandler();publicpartialclassfrmEventGenerate:Form{publicstaticeventLinkToEventHandlerEvt;publicfrmEventGenerate(){InitializeComponent();Evt+=newLinkToEventHandler(ReceiveEvent);发送事件();}publicstaticvoidSendEvent(){if(Evt!=null){Evt();}}publicvoidReceiveEvent(){System.Console.WriteLine("ReceivedEvent-Thisworksok");}}}frmEventReceive.cs:使用系统;使用System.Collections.Generic;使用System.ComponentModel;使用系统数据;使用系统绘图;使用System.Linq;使用系统文本;使用System.Windows.Forms;命名空间事件{publicpartialclassfrmEventReceive:Form{publicfrmEventReceive(){InitializeComponent();frmEventGeneratefrmGen=newfrmEventGenerate();}publicvoidReceiveEvent(){System.Console.WriteLine("我想在这里接收事件!");在构造函数中,在实例中优化frmEventGenerate:frmGen.Evt+=ReceiveEvent;您不再需要newLinkEventHandler(...)-从C#2开始,方法组转换可用,您可以使用它从方法组(方法名称)转换为委托typeEdit:我没有看到您的活动是静态的。这表明您实际上应该使用:frmEventGenerate.Evt+=ReceiveEvent;...而且您根本不需要frmGen变量。但是,在这一点上我非常不同意你的观点——你为什么一开始就希望事件是静态的?(我还敦促你更明智地命名你的类型-像“EventGenerator”这样的东西在这里会更好。例如,忽略类型名称应该是Pascal大小写的约定会导致代码混乱。)以上就是C#学习教程:c#两种形式的事件处理分享的全部内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注——//ReceiverusingSystem;使用System.Windows.Forms;namespaceeTest{publicpartialclassfrmMain:Form{publicfrmMain(){InitializeComponent();}publicvoidReceiveEvent(inti){MessageBox.Show("从表单接收到的事件:"+i.ToString());}privatevoidbtnNew_Click(objectsender,EventArgse){intnum=0;整数x=0;num=Convert.ToInt32(txtForms.Text);for(x=0;x站,如涉及侵权,请点右联系管理员删除。如需转载,请注明出处: