• Winform开发之窗体传值


    Winform的窗体之间的数据传递是开发的必备技术,下面介绍几种典型的传值方法

    1、构造函数传值,但这种方法是单向的(推荐)

    上代码,先传值

     private void button2_Click(object sender, EventArgs e)
            {
                Form3 fr3 = new Form3("要传的值啊");
                fr3.ShowDialog();
            }

    接值,对了,这里需要重载一个Form3的构造函数,然后将拿到的值显示出来

     public Form3(string canshu)
            {
                InitializeComponent();
                label1.Text = canshu;
            }

    效果图,就是这么简单

    2、静态变量传值(不推荐)

    可以将静态变量申明在你需要的地方,比如一个单独类,或者Form中,比如我们在这里申明在Form2中

     public static string xvalue;
    private void button2_Click(object sender, EventArgs e)
            {
                xvalue = "要传的值啊xvalue";
                Form3 fr3 = new Form3();
                fr3.ShowDialog();
            }

    先给赋值,然后在Form3中取值

     public Form3()
            {
                InitializeComponent();
                label1.Text = Form2.xvalue;//Form2实际也是个class,直接取静态值即可,如果静态变量xvalue定义在其他类中,即将Form2替换即可            
            }

    效果图上

    3、通过共有属性传值

    首先在要打开的Form中创建一个共有属性,然后在调用窗口赋值即可。比如下面Form2启动Form3,即给Form3的yvalue传值

    (1)在Form3中定义共有属性

    public string yvalue {
                get 
                {
                    return label1.Text.ToString();
                }
                set 
                {
                    label1.Text = value;
                }
            }

    (2)Form2中启动Form3,并传值

     private void button2_Click(object sender, EventArgs e)
            {           
                Form3 fr3 = new Form3();
                fr3.yvalue = "要传的值啊";
                fr3.ShowDialog();
            }

    4、通过Owner属性传值

    (1)在调用者Form2中申明一个公有变量,并赋值,设置需要启动的Form3的Owner

     public string xvalue;
            private void button2_Click(object sender, EventArgs e)
            {
                xvalue = "Form2要传的值";
                Form3 fr3 = new Form3();
                fr3.Owner = this;
                fr3.ShowDialog();
            }

    (2)启动窗体Form3中取值

     private void Form3_Load(object sender, EventArgs e)
            {
                Form2 fr2 = (Form2)this.Owner;
                label1.Text = fr2.xvalue;
            }

    这种方法实际是将Form2传给了Form3,因此Form3可以取到Form2的所有公有变量和属性。

    5、委托传值(推荐)

    委托传值主要用在子窗体给父窗体传值上,即上文的Form3给Form2传值

    (1)先在Form3中申明委托

     public delegate void PutHandler(string text);
            public PutHandler putTextHandler;//委托对象
            private void button1_Click(object sender, EventArgs e)
            {
                if (putTextHandler != null)
                {
                    putTextHandler(textBox1.Text.ToString());
                }
            }

    (2)在Form2中绑定委托事件

     public void getValue(string strV)
              {
                 this.textBox1.Text = strV;
             }
           
            private void button1_Click(object sender, EventArgs e)
            {
                Form3 fr3 = new Form3();
                fr3.putTextHandler = getValue;
                fr3.ShowDialog();          
            }

    效果图

    当然还有其他的传值方式,又兴趣的朋友可以再研究。

  • 相关阅读:
    MVC————前台中,冒号与等号的区别
    MVC-通过对象获取整个表单内容
    对Webservice的理解
    windows上使用logstash-input-jdbc
    elasticsearch-head的安装和使用
    最简单的php学习
    linq to sql 和linq to php 的区别
    thinkphp中JS文件不能写__ROOT__变量
    用curl获取https请求时出现错误的处理
    优化apk的odex处理
  • 原文地址:https://www.cnblogs.com/yieryi/p/4616688.html
Copyright © 2020-2023  润新知