欢迎来到天天文库
浏览记录
ID:37861148
大小:55.00 KB
页数:8页
时间:2019-06-01
《NET中窗体间相互访问的几种方式》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、.NET中窗体间相互访问的几种方式 在我们的程序中,窗体之间经常要相互访问彼此的成员,调用彼此的方法,或者激发彼此的事件。下面就我的经验,简单谈谈在.NET中窗体间相互访问的几种方式。 以下给出了C#.NET和VB.NET的示例代码。用Form1、Form2类分别表示主、从窗体。 1、内部成员访问法,适合于主窗体访问它所创建的从窗体对象中的成员。只需将从窗体允许主窗体访问的那些成员加上internal或Friend限定符。例如:C#主privatevoidShowForm2Info(){ Form2f2=newFor
2、m2(); f2.Show(); MessageBox.Show(f2.MyName);}C#从internalstringMyName="AForm2Object";VB主PrivateSubShowForm2Info() Dimf2AsNewForm2 f2.Show() MsgBox(f2.MyName)EndSubVB从FriendMyNameAsString="AForm2Object" 2、将以上方法反过来用,让从窗体访问创建它的主窗体中的成员,需要增加一个步骤:在从窗体的构造函数中传入一个主窗体
3、的引用,以便找到创建它的主窗体(新建的构造函数中不要忘了调用InitializeComponent()函数)。主窗体创建从窗体对象时传入自身的引用。例如:C#主privatevoidShowForm2(){ Form2f2=newForm2(this); f2.Show();} internalstringMyName="AForm1Object";C#从privateForm1f1;publicForm2(Form1_f1){ InitializeComponent(); f1=_f1;} privatevo
4、idShowForm1Info(){ MessageBox.Show(f1.MyName);}VB主PrivateSubShowForm2() Dimf2AsNewForm2(Me) f2.Show()EndSub FriendMyNameAsString="AForm1Object"VB从Privatef1AsForm1PublicSubNew(ByVal_f1AsForm1) MyBase.New() InitializeComponent() f1=_f1EndSub PrivateSubShowFo
5、rm1Info() MsgBox(f1.MyName)EndSub 3、从窗体访问主窗体中的成员,如果主窗体只有一个实例,或者被访问对象是全局性的,可以将主窗体中要求访问的成员设置为静态的,加上static或Shared限定符即可:C#主privatevoidShowForm2(){ Form2f2=newForm2(); f2.Show();} internalstaticstringMyName="AForm1Object";C#从privatevoidShowForm1Info(){ MessageBox
6、.Show(Form1.MyName);}VB主PrivateSubShowForm2() Dimf2AsNewForm2() f2.Show()EndSub FriendSharedMyNameAsString="AForm1Object"VB从PrivateSubShowForm1Info() MsgBox(Form1.MyName)EndSub 4、还可以运用.NET的事件委托机制,实现更加灵活的相互调用。下例是从窗体激发主窗体的事件。事件委托机制的功能事实上远比此例强大,大家可以找书看看它的详细用法。C#
7、主privatevoidShowForm2(){ Form2f2=newForm2(); f2.Show(); f2.SendMessage+=newForm2.DelegateOfSendMessage(ShowMessage);} privatevoidShowMessage(stringstr){ MessageBox.Show(str);}C#从publicdelegatevoidDelegateOfSendMessage(stringstr);publiceventDelegateOfSendMess
8、ageSendMessage; privatevoidSend(){ SendMessage("AMessageFromForm2");}VB主PrivateSubShowForm2() Dimf2AsNewForm2 f2.Show() AddHandlerf2.SendMessage,AddressOfShowMess
此文档下载收益归作者所有