zoukankan      html  css  js  c++  java
  • WinForm窗体间传值

    第一种方法:

    创建一个类,里面声明用于存储接收的字段。传的时候存储于字段中,要用的时候,直接类名.字段名 进行调用。(这种方法传递是双向的)

     

    第二种方法:

    1.在Form1里定义

    public string Name = "*****"

     

    2. Form2里创建Form1对象,

    Form1 f = new Form1();

     

    然后就可以通过f.Name取值了

     

    第三种方法:用构造函数

    在窗体Form2中

    int value1; 

    string value2; 

    public Form2 ( int value1 , string value2 ) 

    { 

         InitializeComponent ( ); 

         this.value1 = value1; 

         this.value2 = value2; 

    }

    在窗体Form1中这样调用

    new Form2 ( 111 , "222" ).Show ( ); 

    这样就把111,"222",这2个值传送给了Form2  d

    但是这样的传值是单向的

    第四种方法:通过窗体的公有属性值(特点:实现简单)

    举例“在窗体Form2中定义一个公有属性Form2Value,获取和设置textBox1的文本值

    public string Form2Value 

    { 

         get 

         { 

              return this.textBox1.Text; 

         } 

         set 

         { 

             this.textBox1.Text = value; 

         } 

    } 

    在窗体Form1中这样调用

    Form2 f2 = new Form2 ( ); 

    f2.Form2Value = "Ok"; //Form2textBox1赋值Ok 

    f2.ShowDialog ( ); 

     

    第五种方法:通过窗体的公有属性值和Owner属性(特点:实现简单,灵活)

    在窗体Form1中

    public int Form1Value = 1; 

    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中

    public int Form1Value = 1; 

    Form2 f2 = new Form2 ( ); 

    f2.Show ( ); 

    在窗体Form2中

    string formName = "Form1"; 

    Form fr = Application.OpenForms [ formName ]; 

    if ( fr != null ) 

    { 

         Form1 f1 = ( Form1 ) fr; 

         //取到Form1的值是

         MessageBox.Show ( f1.Form1Value.ToString ( ) ); 

         //Form1Form1Value赋值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; 

         //接收到Form2textBox1.Text 

         this.textBox1.Text = f2.Form2Value; 

    }

    来自 <http://bbs.csdn.net/topics/390128592>

  • 相关阅读:
    thinkphp5 tp5 命名空间 报错 Namespace declaration statement has to be the very first statement in the script
    开启 php 错误 提示 php-fpm 重启 nginx 500错误 解决办法 wdlinux lnmp 一键包 php脚本无法解析执行
    js 设置 cookie 定时 弹出层 提示层 下次访问 不再显示 弹窗 getCookie setCookie setTimeout
    php 二维数组 转字符串 implode 方便 mysql in 查询
    nginx 重启 ps -ef|grep nginx kill -HUP 主进程号
    jquery bootstrap help-block input 表单 提示 帮助 信息
    jquery 倒计时 60秒 短信 验证码 js ajax 获取
    jQuery如何获取同一个类标签的所有的值 遍历
    linux下C语言文件操作相关函数
    gcc,gdb用法
  • 原文地址:https://www.cnblogs.com/xixim/p/4589120.html
Copyright © 2011-2022 走看看