了解了窗体的显示相关知识,接着总结一下窗体的传值方法: 

.通过构造函数 
特点:传值是单向的(不可以互相传值),实现简单 实现代码如下: 在窗体Form2中        

int value1; string value2; 
public Form2 ( int value1 , string value2 ) { 
    InitializeComponent ( );       this.value1 = value1;       this.value2 = value2; } 
在窗体Form1中这样调用  
 , " ).Show ( );  //这样就把111,"222",这2个值传送给了Form2   
.通过静态变量 
特点:传值是双向的,实现简单 实现代码如下: 
在一个app类中定义一个静态成员value public class app { 
  public static string value; } 
在窗体Form1中这样调用  
app.value = "f2";        //给静态成员赋值 new Form2 ( ).Show ( );  //显示Form2 在窗体Form2中       
this.Text = app.value;  //取回app.value的值 
app.value = "Form2";    //给app.value赋值,以便其他窗体调用 
.通过窗体的公有属性值 特点:实现简单 实现代码如下: 
在窗体Form2中定义一个公有属性Form2Value,获取和设置textBox1的文本值 

public string Form2Value{     

  get{ 
        return this.textBox1.Text;         }     

  set         { 
        this.textBox1.Text = value;         } } 
在窗体Form1中这样调用  Form2 f2 = new Form2 ( ); 
f2.Form2Value = "Ok";     //给Form2的textBox1赋值Ok f2.ShowDialog (  );   
.通过窗体的公有属性值和Owner属性 特点:实现简单,灵活 实现代码如下: 在窗体Form1中 
; Form2 f2 = new Form2 ( ); 
f2.ShowDialog ( this );       //把Form1作为Form2的所有者传递给Form2 在窗体Form2中 
//Form2的所有者是Form1 
Form1 f1 = ( Form1 ) this.Owner; //取到Form1的值是1 
MessageBox.Show ( f1.Form1Value .ToString ( ) ); //给Form1的Form1Value赋值222 f1.Form1Value = 222;   

.通过窗体的公有属性值和Application.OpenForms属性  
说明:Application.OpenForms属性:获取属于应用程序的打开窗体的集合。(此属性在 .NET Framework2.0版中) 实现代码如下: 在窗体Form1中 
;Form2 f2 = new Form2 ( ); f2.Show ( ); 在窗体Form2中 
string formName = "Form1"; 
Form fr = Application.OpenForms [ formName ]; 

if ( fr != null ) { 
    Form1 f1 = ( Form1 ) fr;     //取到Form1的值是1 
    MessageBox.Show ( f1.Form1Value.ToString ( ) );     //给Form1的Form1Value赋值222     f1.Form1Value = 222; }   

.通过事件 实现代码如下: 
在窗体Form2中定义公有属性Form2Value,获取和设置textBox1的文本值 并且还定义一个accept事件 

public string Form2Value {       get         { 
        return this.textBox1.Text;         }     

  set         { 
        this.textBox1.Text = value;         } } 
public event EventHandler accept;        
private void button1_Click ( object sender , EventArgs e ) { 
    if ( accept != null )       { 
        accept( this , EventArgs.Empty );  //当窗体触发事件,传递自身引用       } } 
在窗体Form1中 
Form2 f2 = new Form2 ( ); 
f2.accept += new EventHandler ( f2_accept ); f2.Show ( ); 
void f2_accept ( object sender , EventArgs e ) { 
//事件的接收者通过一个简单的类型转换得到Form2的引用     Form2 f2 = (Form2) sender;  //接收到Form2的textBox1.Text 
this.textBox1.Text = f2.Form2Value;  } 

c#窗体的传值方法的更多相关文章

  1. C# 窗体间传值方法大汇总

    第一种方法:创建一个类,里面声明用于存储接收的字段.传的时候存储于字段中,要用的时候,直接类名.字段名 进行调用.(这种方法传递是双向的) 第二种方法:1.在Form1里定义 public strin ...

  2. C# 窗体间传值方法大汇总(转)

    第一种方法:创建一个类,里面声明用于存储接收的字段.传的时候存储于字段中,要用的时候,直接类名.字段名 进行调用.(这种方法传递是双向的) 第二种方法:1.在Form1里定义 public strin ...

  3. 【转】WinForm窗体显示和窗体间传值

    以前对WinForm窗体显示和窗体间传值了解不是很清楚 最近做了一些WinForm项目,把用到的相关知识整理如下 A.WinForm中窗体显示 显示窗体可以有以下2种方法: Form.ShowDial ...

  4. C# ShowDialog时窗体贱传值得方法

    用C#开发应用的时候,通常需要多个窗体!有时候为了打开窗体的时候禁止操作父窗体,我们一般采用模态对话框的方法,也算就是用ShowDialog()方法. 假设有两个窗体A和B,A作为主窗体使用ShowD ...

  5. C#窗体间传值的简便方法/工具

    一.问题:窗体间传值必须需要窗体之间有联系,具体有如下方式 窗体间传值涉及到窗体A必须拥有窗体B,这样才可以实现A-B之间传值 窗体A与窗体B在窗体/实例C中,A-B可互相通讯 其他方式,不细讨论,复 ...

  6. Pyqt 窗体间传值

    窗体间传值网上有好多方法,比如新建文件,先将子类窗体的数据传到文件中,父窗体读取文件.  Signal&Slot机制进行传值 等等 在这里,我们就举个采用apply方法:Signal& ...

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

    windows form (窗体) 之间传值小结   windows form (窗体) 之间传值小结 在windows form之间传值,我总结了有四个方法:全局变量.属性.窗体构造函数和deleg ...

  8. ASP.NET页面之间的几种传值方法

    首先是QueryString方法传值: QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中.如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法 ...

  9. C#窗体向另一个窗体实时传值及传值问题

    C#窗体向另一个窗体实时传值  另外的传值方法:

随机推荐

  1. ssh maven 搭建

    数据库建表脚本不带,是很简单的一个表,把数据库环境搭建起来即可. 1.项目结构(Eclipse) 2.pom.xml <project xmlns="http://maven.apac ...

  2. No2_1.接口继承多态_Java学习笔记_接口

    接口.继承与多态 1.继承和多态是面向对象开发语言中的重要一个环节,使用得当,可以将整个程序的架构变得非常有弹性,减少代码冗余: 2.继承:复用定义好的类: 3.多态:可以动态调整对象的调用,降低对象 ...

  3. POJ1636 动态规划+并查集

    POJ1636 问题重述: 两个监狱中各有m个囚犯,欲对这两个监狱中的囚犯进行等数量的交换.已知某些囚犯不能关押在同一个监狱,求解可以交换人数的最大值k (k < m/2). 分析: 假设监狱1 ...

  4. 列表:一个打了激素的数组2 - 零基础入门学习Python011

    列表:一个打了激素的数组2 让编程改变世界 Change the world by program 从列表中获取元素 跟数组一样,我们可以通过元素的索引值(index)从列表获取单个元素,注意,列表索 ...

  5. PostgreSQL的时间函数使用整理

    PG的时间函数使用整理如下 1.获取系统时间函数 select now(); --2012-05-12 18:51:59.562+08 select current_timestamp; --2012 ...

  6. BZOJ 1090 字符串折叠(区间DP)

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1090 题意:字符串AAAAAAAAAABABABCCD的最短折叠为9(A)3(AB)CC ...

  7. Keil C51中函数指针的使用

    函数指针在C语言中应用较为灵活.在单片机系统中,嵌入式操作系统.文件系统和网络协议栈等一些较为复杂的应用都大量地使用了函数指针.Keil公司推出的C51编译器是事实上80C51 C编程的工业标准,它针 ...

  8. A站有一个页面需要PV统计 A站读写该数据 B站读该数据 需要数据同步

    A站弄个缓存,并且开放出一个读取借口给B站 B站读取数据的时候,调用该接口和数据库内的数据累加,然后进行限时即可 ---------------------- 另外其他方法 session服务.mem ...

  9. C++标准:C++不允许修改任何基本型别(包括指针)的暂时值

    从<C++标准库>一书中看到这样一句话:C++不允许修改任何基本型别(包括指针)的暂时值,想了半天,实在不理解.基本类型char,int,float等等还有暂时值?例如int a=2,那么 ...

  10. POI导入数据

    package util; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.I ...