windows form (窗体) 之间传值小结

windows form (窗体) 之间传值小结

在windows form之间传值,我总结了有四个方法:全局变量、属性、窗体构造函数和delegate。

第一个全局变量:

这个最简单,只要把变量描述成static就可以了,在form2中直接引用form1的变量,代码如下:

在form1中定义一个static变量public static int i= 9 ;

Form2中的钮扣按钮如下:

private void button1_Click(object sender, System.EventArgs e)

{

textBox1.Text = Form1.i.ToString();

}

第二个方法是利用属性,请详博客:

http://blog.csdn.net/tjvictor/archive/2006/06/04/772711.aspx

第三个方法是用构造函数:

Form1 的button按钮这样写:

private void button1_Click(object sender, System.EventArgs e)

{

Form2 temp = new Form2( 9 );

temp.Show();

}

Form2 的构造函数这样写:

public Form2( int i )

{

InitializeComponent();

textBox1.Text = i.ToString();

}

第四个方法是用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();

}

点击form2的button,form1中的textbox中的值就会相应变化。

在这四个方法中,

第一个是双向传值,也就是说,form1和form2改变i的值,另一方也会受到影响。

第二个方法可以单向也可以双向传值。

第三个方法是form1->form2单向传值。

第四个方法是form2->form1单向传值。

以后有新的方法我再补充,还有一个就是用event,和delegate差不多,在这里就不说了windows form (窗体) 之间传值小结

在windows form之间传值,我总结了有四个方法:全局变量、属性、窗体构造函数和delegate。

第一个全局变量:

这个最简单,只要把变量描述成static就可以了,在form2中直接引用form1的变量,代码如下:

在form1中定义一个static变量public static int i= 9 ;

Form2中的钮扣按钮如下:

private void button1_Click(object sender, System.EventArgs e)

{

textBox1.Text = Form1.i.ToString();

}

第二个方法是利用属性,请详见博客:

http://blog.csdn.net/tjvictor/archive/2006/06/04/772711.aspx

第三个方法是用构造函数:

Form1 的button按钮这样写:

private void button1_Click(object sender, System.EventArgs e)

{

Form2 temp = new Form2( 9 );

temp.Show();

}

Form2 的构造函数这样写:

public Form2( int i )

{

InitializeComponent();

textBox1.Text = i.ToString();

}

第四个方法是用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();

}

点击form2的button,form1中的textbox中的值就会相应变化。

在这四个方法中,

第一个是双向传值,也就是说,form1和form2改变i的值,另一方也会受到影响。

第二个方法可以单向也可以双向传值。

第三个方法是form1->form2单向传值。

第四个方法是form2->form1单向传值。

时间: 2024-12-25 07:45:09

windows form (窗体) 之间传值小结的相关文章

一个简易的便签工具:探索窗体之间传值和传引用的方法

简单的便签工具:实现了基于文本的便签信息的浏览,删除,添加.可以查看时间,实时更新数据. 这个便签工具完全基于面向对象的编程方式,首先定义Note类,然后使用NoteManager类进行便签的管理.其中的关键就是在NoteManager类中定义list<Note>泛型集合.原理上和ArrayList基本是一致的. NoteManager的工作原理: public List<Note> list;//定义一个泛型集合,并在构造函数中初始化. private int CurrentIn

winform独立窗体之间传值的简单方法

最近做一个多窗体联动的小程序,用到了窗体间传值. 网络上到处都是父窗体和子窗体之间传值的方法,总结起来有 1.有参数的构造函数, 2.委托 以委托为例,父窗体如果想要发送信息给子窗体,只需要在父窗体中定义好事件. //str为发送内容,formName为指定要发送给的窗体名字 public delegate void ReceiveMsg(string str,string formName); public event ReceiveMsg receiveMsg; 然后在实例化子窗体时,将子窗

C#使用事件方式Winform窗体之间传值

[摘自:http://www.cnblogs.com/codeToUp/p/5371062.html] 工程的源代码地址:https://github.com/yes-or-no/WinFormTransValueDemoByDelOrEvent.git C#winform窗体间传值,三种方法示例,注释详细.使用方法:使用vs2013打开编译运行即可: 工程中总共介绍了三种方法:###方法1:通过保存对象的引用调用其方法实现对子窗体的控制:###方法2:通过委托,在子窗体显示之前,为委托赋值,关

窗体之间传值的方法

第一种方法: 创建一个类,里面声明用于存储接收的字段.传的时候存储于字段中,要用的时候,直接类名.字段名 进行调用.(这种方法传递是双向的) 第二种方法: 1.在Form1里定义 public string Name = "*****" 2. 在Form2里创建Form1对象, Form1 f = new Form1(); 然后就可以通过f.Name取值了 第三种方法:用构造函数在窗体Form2中 int value1; string value2; public Form2 ( in

窗体之间传值

传值可在副窗口cs中定义副窗口的Tag属性,结合主窗口cs中的:副窗口类名.ActiveForm.Tag属性//进行传递. 同时须结合主窗口中定义的副窗口的FormClosing方法. private void 显示标注ToolStripMenuItem_Click(object sender, EventArgs e) { //没有图层时,报提示框 if (axMapControl1.LayerCount <= 0) { MessageBox.Show("当前无图层,无法显示标注&quo

c# 不同窗体之间传值和调用

1.子窗体事件刷新父窗体界面值 子窗体定义委托和事件 //声明一个委托 public delegate void DisplayUpdateDelegate(string str); //声明事件 public event DisplayUpdateDelegate ShowUpdate; private void Form2_Load(object sender, EventArgs e) { } private void button1_Click(object sender, EventA

winform使用委托和事件在窗体之间传值

定义委托和事件,并且触发这个事件 //定义委托 public delegate void ShowOutStockDelegate(List<OutStockResultDto> outStockResultDto); //定义事件 public event ShowOutStockDelegate ShowOutStockEvent; private void btnConfirm_Click(object sender, EventArgs e) { ShowOutStockEvent(o

windows form窗体应用程序,建一个记事本参考代码,重点是打开,保存,另存为

//当点击打开的时候 private string files; //建一个成员变量,用来存储打开的路径 private void 打开OToolStripMenuItem_Click(object sender, EventArgs e) { //openFileDialog1.Filter = "文本文件|*txt|视频文件|*avi;*jpg"; //filter建立一个筛选器 //openFileDialog1.ShowDialog(); DialogResult isok =

变不可能为可能 - .NET Windows Form 改变窗体类名(Class Name)有多难?续篇

发布<.NET Windows Form 改变窗体类名(Class Name)有多难?>转眼大半年过去了,要不是在前几天有园友对这篇文章进行评论,基本上已经很少关注它了,毕竟那只是一个解惑的研究,在开发中没什么实际的用处.但是由于Squares园友的评论,结合最近自己相关的工作,灵感一现,却真的找到了解决之法,不得不感慨一下,“问题总是会有解决办法的,只是自己能力不够或一时没想到而已”.好了,前奏写完,进入正题. 最近相关工作 最近一段时间,重新拾起以前比较熟悉的界面UI开发,由于需要,了解了