ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Windows Form窗体之间传值——委托

2021-07-12 20:34:34  阅读:167  来源: 互联网

标签:Form 委托 form2 Windows Form2 窗体 public 传值


  对于Form窗体之间的传值,如果要将值从Form1传到Form2中,最简单的就是在Form2中声明一个公有变量,然后在Form1中实例化Form2,然后调用Form2的公有变量:

    (1)首先在Form2中声明一个共有变量:

public string str = null;

    (2)然后在Form1中实例化Form2窗体:

public Form2 form2= new Form2();

    (3)在Form1窗体中直接或者在按钮中将值传给Form2:

if (form2 == null || form2.IsDisposed)
{
    form2 = new Form2();
}
form2.str = "窗体1的值";

  这种方式适合从父窗体传值到子窗体,如果是要继续将子窗体的值传回给父窗体,这种实例化一个窗体然后传值的方式不太适用,因为如果是在子窗体中实例化父窗体,就相当于是新建了一个窗体,这样就没有办法实现在原来的父窗体中显示值。用委托进行传值可以很好的解决这个问题,首先在namespace(命名空间)中声明public型委托,然后在子窗体中声明一个委托事件,在子窗体中调用委托事件,然后在父窗体中实例化子窗体,对子窗体中调用的委托事件进行事件绑定,最终实现了将子窗体中的值传到父窗体:

    (1)声明委托:

public delegate void TranValue(double value);

    (2)在子窗体类中声明委托事件:

public event TranValue tranvalue;

    (3)在子窗体中调用委托事件:

double value;
tranvalue(value);

    (4)在父窗体中实例化子窗体,绑定委托事件:

        public Form2 form2= new Form2();
        private void DisplayToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (form2== null || form2.IsDisposed)
            {
                form2= new Form2();
            }
            form2.shuishen += form2_tranvalue;
            form2.Show();
        }

        /// <summary>
        /// 委托绑定事件,让Textbox显示子窗体传进来的值
        /// </summary>
        /// <param name="Height"></param>
        void form2_tranvalue(string value)
        {
            Textbox.Text = value;
        }

  补充:两种方法都只能是单向传值,第一种适合将值从父窗体传给子窗体,第二种适合将值从子窗体传回父窗体。第二种方法如果是将值从父窗体传回子窗体还需要子子窗体中实例化父窗体,而且还是绑定父窗体的事件,这种方法不太适合父窗体传给子窗体。

 

标签:Form,委托,form2,Windows,Form2,窗体,public,传值
来源: https://www.cnblogs.com/FuHuayu/p/15003758.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有