如何在窗体之间通讯的几种方法 ? VB.NET方案
2012-05-27 16:26
274 查看
在面向过程的程序中,我们可以通过窗体名来访问其他窗体中控件或者数据,但是在面向过程中却稍有不同,面向过程显示了它的优点。
假设一个Window解决方案中,有两个窗体Form1和Form2,Form1窗体中有一个DataGridView数据控件,如何在Form2中访问DataGridView中数据,即如何实现在这两个窗体之间通讯呢?
第一种方法
通过设置Form2窗体的构造函数,改为带参数的构造函数,传入一个对象,在设计模式中经常会传入类或对象,实现了对数据元素的封装,有些人通过传入一些具体参数,如字符串、控件等,无疑这种方式比较局限,扩展性很差,如果Form1中再增加新内容后,还需要改传递参数。
Private mF_Form As Form1
更改Form2的构造函数为有参数的
Public Sub New(ByVal form As Form1)
MyBase.New()
'该调用是 Windows 窗体设计器所必需的。
InitializeComponent()
Me.mF_Form = form
End Sub
现在,就可以把Form1对象传入Form2中,这里对Form1的修改也是真正对Form1的修改,因此,也需要谨慎操作。
在Form1中用到Form2的地方还需要加上一句话:
Dim form1 As New Form2(Me)
这是因为Form2的构造函数已经改变,实例化Form2时不再调用默认构造函数,需要我们指明参数,然后,实例化。
这里的Me指的就是Form1当前的实例,也就是把当前Form1的实例通过Form2的构造函数传递给Form2类,否则出现 “错误对非共享成员的引用要求对象引用”
第二种方法
如果我们在Form2中,这样声明:Dim form1 As new Form1
我们知道此时form1是一个新的form1实例,不是我们要用的那个,我们只需让这个实例变成我们要用的那个即可。
form1.Owner=Me
这样就可以正常通讯了。
有很多时候为了安全,我们还需要改一个声明级别,因为这样可以对原创题进行更改,很不安全。
在C#等语言中,方法类型……
假设一个Window解决方案中,有两个窗体Form1和Form2,Form1窗体中有一个DataGridView数据控件,如何在Form2中访问DataGridView中数据,即如何实现在这两个窗体之间通讯呢?
第一种方法
通过设置Form2窗体的构造函数,改为带参数的构造函数,传入一个对象,在设计模式中经常会传入类或对象,实现了对数据元素的封装,有些人通过传入一些具体参数,如字符串、控件等,无疑这种方式比较局限,扩展性很差,如果Form1中再增加新内容后,还需要改传递参数。
Private mF_Form As Form1
更改Form2的构造函数为有参数的
Public Sub New(ByVal form As Form1)
MyBase.New()
'该调用是 Windows 窗体设计器所必需的。
InitializeComponent()
Me.mF_Form = form
End Sub
现在,就可以把Form1对象传入Form2中,这里对Form1的修改也是真正对Form1的修改,因此,也需要谨慎操作。
在Form1中用到Form2的地方还需要加上一句话:
Dim form1 As New Form2(Me)
这是因为Form2的构造函数已经改变,实例化Form2时不再调用默认构造函数,需要我们指明参数,然后,实例化。
这里的Me指的就是Form1当前的实例,也就是把当前Form1的实例通过Form2的构造函数传递给Form2类,否则出现 “错误对非共享成员的引用要求对象引用”
第二种方法
如果我们在Form2中,这样声明:Dim form1 As new Form1
我们知道此时form1是一个新的form1实例,不是我们要用的那个,我们只需让这个实例变成我们要用的那个即可。
form1.Owner=Me
这样就可以正常通讯了。
有很多时候为了安全,我们还需要改一个声明级别,因为这样可以对原创题进行更改,很不安全。
在C#等语言中,方法类型……
相关文章推荐
- 如何在窗体之间通讯的几种方法 ? VB.NET方案 .
- 如何在窗体之间通讯的几种方法 ? VB.NET方案
- 如何在窗体之间通讯的几种方法 ? VB.NET方案
- [VB.NET]如何在第二个窗体里使用第一个窗体的控件方法
- VB.NET在多个窗体之间如何设置主窗体
- Asp.net页面之间传递参数的几种方法
- 如何使用Vb.net来修改Windows窗体非客户区
- VB.NET连各种数据库的几种方法
- VB.NET获取硬盘信息的几种方法
- C#窗体间通讯处理的几种方法总结
- Asp.net页面之间传递参数的几种方法
- 在.net(C# or vb.net)中如何取消一个窗体的关闭
- VB.NET下获取硬盘信息的几种方法
- VB.NET连接数据库的几种方法
- Asp.net页面之间传递参数的几种方法
- VB.NET下窗体继承的简单操作方法
- VB.NET下获取硬盘信息的几种方法
- VB.NET下如何利用ExecuteScalar方法及select @@Identity获得“自动编号”的关键字
- C#窗体间通讯的几种处理方法(事件)
- 应用程序之间互相通讯的几种方法