- 1、本文档共2页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
相信大家在做系统的时候,很多人都遇到需要在两个不同的窗体间传递数据的情况,例如可
以单独打开一个窗口,用于显示代码名称对照关系,通过双击该窗体的数据,我们希望这个
数据传递到另一个窗体中。如何实现两个窗体间数据的实时传递呢?其实很简单,只需要简
单地运用事件通知就可以了。
首先做如下假设:
有两个窗体MainForm,SubForm,我们希望SubForm向MainForm实施传递数据,开发语言
就用.netC#
1、新建一个工程,并添加两个窗体,分别命名为frmMain,frmSub
2、在frmMain上添加一个文本框和一个按钮,分别命名txbxReceiveMessageContainer和
btnOpenSubForm
3、在frmSub上添加一个文本框和一个按钮,分别命名txbxSendMessageContainer和
btnSendMessage
4、在工程中添加一个类文件,取名为Global,用于放置一些公用代码
做好了以上准备工作,下面开始编写代码,为方便大家阅读,我把关键代码直接贴上来。
//Global.cs
publicclassSubFormEventArg:System.EventArgs//事件数据,其中构造函数中的参数是
object类型,也就是说我们可以在两个窗体间传递任何数据,如数组,字符串,结构体以及
其他任何复杂的数据形式
{
privatereadonlyobjectmyObj;
publicSubFormEventArg(objectmyObj)
{
this.myObj=myObj;
}
publicobjectMyMessage
{
get
{
returnmyObj;
}
}
}
publicclassFormHandel
{
publicstaticint[]myFormHandel={1,2};//根据需要而定,如果是在三个窗体间传递
数据的话,可以定义三个数据{1,2,3}
}
publicdelegatvoidMessageChangeEventHander(objectsender,SubFormEventArge);//
很关键,用于两个窗体间互通消息
//frmMain.cs
在frmMain构造函数中添加:
FormHandel.myFormHandel[0]=(int)this.Handle;
添加消息处理函数,即怎么处理frmSum传递过来的数据
publicvoidOnMessageChange(objectsender,Form2EventArge)
{
//处理消息(e.MyMessag)的代码,值得注意的是,由于e.MyMessag是object
类型,此处需要根据你传递的数据的类型进行拆箱(即我们通常所说的强制转换),例如如
果传递的是字符串数组,则可以string[]message=(string[])e.MyMessag,然后再处理messag
this.txbxReceiveMessageContainer.Text=e.MyMessage.ToString();
}
在btnOpenSubForm的click事件中添加frmSum的调用函数:
frmSubfrm=newfrmSub();
frm.MessageChange+=newMessageChangeEventHander(OnMessageChange);//很
重要,用于注册消息处理函数
frm.Show();
//frmSub.cs
定义一个窗体级事件变量
publiceventMessageChangeEventHanderMe
文档评论(0)