winforms中的窗体传值

 窗体之间值的传递方式有很多,自己简单做了一个总结:
一:通过全局的静态变量来传递 这是一个双向的传值
我们可以自己建立一个类,在里面加一个静态的全局变量,如:
class Helper
{
        public static string LoginName = "";
}
这样一来,如果我们想要从一个窗体向令一个窗体传值,便可在第一个窗体给这个类的此变量赋值,再另一窗体同样可以调用。
二:通过构造方法来传值 这是一个单向的传值
这种方法原来我自己用的是比较多的,看自己习惯喜好吧
这种方式比较简单,我们只要在目标窗体的构造方法里加一个构造方法的重载即可,例:
        private string _loginName;
        public Form3(string LoginName)
        {
            _loginName = LoginName;
            InitializeComponent();
        }
而我们实例化此类的时候把参数传进来即可,如:
Form3 frm3 = new Form3(textBox1.Text);
            frm3.Show();
这样一来就把我们所要的值传过来了
三:我们可以通过类的属性来传值 单向双向都可以
这个也是比较简单,我们只要在目标窗体的类中声明一个变量封装属性就好了
        private string str;
        public string Str
        {
            get { return str; }
            set { str = value;
            }
        }
我们创建对象的时候只要给此属性赋值就好了
Form2 frm2=new Form2();
frm2.Str=textBox1.Text;
frm2.Show();

呵呵,再给大家举一个小例子
这样是不是很简单,那天有人问我要是我先打开了比如form1的窗体,在from1窗体里面写事件跳到form2窗体,现在是两个窗体同事存在,他现在要把form2窗体中的值传回form1应该怎么办,其实这个利用我们的属性也可以完成
我们就在form1里面加一个文本框在form2中传值让文本框显示,那么我们首先也是先在form1窗体中定义一个属性,像上面那样,这里我们要把传过来的值显示到文本框中,所以写的时候加些东西便好
private string str;
        public string Str
        {
            get { return str; }
            set { str = value;
            this.textBox1.Text = str;
            }
        }
这样一来我们在给属性赋值的同事便给这个文本框赋值了,现在出现一个问题我们要给此属性赋值,必须要得到此窗体类的对象,而此时窗体已经存在,我们就不能从新实例化了,那么我们可以在打开form2的时候把form1类的对象传过来就好了,
form2中:
        Form1 frm1;
        public Form2(Form1 frm)
        {
            frm1 = frm;
            InitializeComponent();
        }
form1中:打开form2创建对象的时候
           Form2 frm2 = new Form2(this);
            frm2.Show();
这样一来我们可以通过传过来的对象来调用属性了 frm1.Str = "这是传过来的值";
这样就大功告成了。
其实,这样就可以了,虽然我们第二第三两种传值方式,我们只要 结合一下就完成了这样的功能,所以变通一下就好了,上面这个例子我们在变通也完全可以声明一个其他对象完成传值,如:数组,sqldatareader的对象
上面的例子其实我们还可以用另一种方式完成,那么我们介绍下一种窗体之间的传值方式
四:用delegate完成传值 这是一个单向的传值
Form2中先定义一个delegate:
public delegate void returnvalue(string str );
public returnvalue ReturnValue;
form2 中的事件中添加
    if ( ReturnValue != null )
        ReturnValue("这是传过来的值");


form1中:打开form2创建对象的时候

    Form2 frm2= new Form2( );    frm2.ReturnValue = new Form2.returnvalue( showvalue );
    frm2.Show();


private void showvalue(string str)
{
    textBox1.Text =str;
}
我感觉说的是比较详细了,希望大家能有所帮助
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值