C#中窗体间传递数据的几种方法
来源:互联网 发布:flv播放器 mac 编辑:程序博客网 时间:2024/06/04 18:23
方法1:在窗体类中定义全局变量,类型为公开、静态的
如public static string str ="";
Form2定义:
private Form1 mF_Form
public Form2 ( Form1 myForm )
{
InitializeComponent ( ) ;
this.mF_Form = myForm ;
}
在Form1中,我在要用到Form2的地方声明如下:
Form2 f2=new Form2(this);////这里的this指的就是Form1当前的实例,也就是把当前Form1的实例通过Form2的构造函数传递给Form2类。
这样在Form2中使用myForm 就可以对原来的Form1窗口进行操作了。但是你要把要操作的Form1中的域和函数定义成public形式的(这样可能不安全),此时的myForm就是真正的最开始打开的Form1了,你可以用这个实例来进行两个窗体的通讯了。
方法3:C#中提供了窗体间进行通讯的现成的属性
在Form1类中声明Form2时用如下代码:
Form2 f2=new Form2();
f2.owner=this;////这里的this指的是类Form1当前的实例。
//也可以使用函数的方法,给当前实例添加一个附属窗口 代码:this.AddOwnedForm(f2);
在Form2类的定义中写如下代码:
Form1 f1=this.owner;
这样f1对应的就是原来的Form1的实例了,也就可以用这个进行通讯了。但是还是要把不同类之间访问的域和函数定义成public,哎,安全确实是一个问题!!
(将public改成protected internal 让继承类或者是同一个程序集中的类进行访问)
方法4:是用delegate,代码如下:
Form2中先定义一个delegate
public delegate void returnvalue( int i );
public returnvalue ReturnValue;
form2 中的button按钮代码如下:
private void button1_Click(object sender, System.EventArgs e)
{
if ( ReturnValue != null )
ReturnValue( 8 );
}
Form1中的button按键如下:
private void button1_Click(object sender, System.EventArgs e)
{
Form2 temp = new Form2( );
temp.ReturnValue = new temp.Form2.returnvalue( showvalue );
temp.Show();
}
private void showvalue( int i )
{
textBox1.Text = i.ToString();
}
0 0
- C#中窗体间传递数据的几种方法
- C#中窗体间传递数据的几种方法
- C#中窗体间传递数据的几种方法
- C#中窗体间传递数据的几种方法
- C#中窗体间传递数据的几种方法
- 【转帖】C#中窗体间传递数据的几种方法
- 总结C#中窗体间传递数据的几种方法
- C#中窗体间数据传递的两种方法
- 总结C#中窗体间传递数据的几种方法 (由别人的方法整理)
- C#窗体间数据传递的四种方法
- c# winform窗体之间传递参数的几种方法
- C#中窗体之间的数据传递
- C#中窗体之间的数据传递
- C#中窗口之间传递数据几种方法
- C# Windows窗体间的数据交互的几种方法(三)
- 窗体间数据传递的几种方法(转至论坛,钢之代码东东的回帖)
- C#中窗体间的消息传递
- C#窗体间传递数据
- Android四大基本组件(Activity,Service,Content Provider 和 BroadcastReceiver)
- 公用表表达式(CTE)引发的改变执行顺序同WHERE条件顺序引发的bug
- struts2为什么filter不能过滤.action的请求
- JavaSocket聊天器<三>多线程客户端向服务端发送信息
- 第三章思维导图
- C#中窗体间传递数据的几种方法
- Android异步机制详解一:THread+Handle
- 2015开启前端之路
- 第四章思维导图
- SpringMVC学习系列(4) 之 数据绑定-1
- SpringMVC学习系列(5) 之 数据绑定-2
- 第五章思维导图
- jfinal
- LIBSVM3.2.0中的matlab文档说明