C# 窗口之间的传值

首先定义两个Form,一个为Form1,一个为Form2,其中Form1作为父窗口,Form2作为子窗口


1、父窗口传值给子窗口

Form1中代码:

public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
Form2 lForm = new Form2();//实例化一个Form2窗口
lForm.String1 = "传值给子窗口Form2成功";//设置Form2中string1的值
lForm.SetValue();//设置Form2中Label1的
lForm.ShowDialog();
}

Form2中代码:

private string string1;
public string String1
{
set
{
string1 = value;
}
}

public void SetValue()
{
this.label1.Text = string1;
}

public Form2()
{
InitializeComponent();
}

2、子窗口返回值给父窗口

Form1中代码:

public Form1()
{
InitializeComponent();
}

private string strValue;
public string StrValue
{
set
{
strValue = value;
}
}

private void btnShowForm2_Click(object sender, EventArgs e)
{
Form2 lForm = new Form2();
lForm.Owner = this;//重要的一步,主要是使Form2的Owner指针指向Form1
lForm.ShowDialog();
MessageBox.Show(strValue);//显示返回的值
}

From2中代码:

public Form2()
{
InitializeComponent();
}

private void btnClose_Click(object sender, EventArgs e)
{
Form1 lForm1 = (Form1)this.Owner;//把Form2的父窗口指针赋给lForm1
lForm1.StrValue = "子窗口Form2返回数值成功";//使用父窗口指针赋值
this.Close();
}

 

winForm:利用窗体的自定义属性实现窗体传值

第1步:在解决方案上添加一个窗体Form2;并添加textBox1、textBox2、Button1,将Button1的标题设为“确定”,DialogResult属性设为“OK”;

第2步:在窗体Form2的类代码中添加两个私有字段: _username、_password,并添加两个public属性:UserName、Password;代码如下:
public partial class Form2: Form
{
     privatestring _username;
     privatestring _password;
     publicstring UserName
     {
         get
         {
             return _username;
          }
         set
         {
             _username=value;
          }
      }
     publicstring Password
     {
         get
         {
             return _password;
          }
         set
         {
              _password=value;
          }
      }
      .....
}

第3步:窗体间相互传值演示
在Form1添加一个的Botton1、一个comboBox1,在Botton1_Click函数中如下代码:
private void button1_Click(objectsender,EventArgs e)
{
      Form2 myForm2= new Form2();
      myForm2.UserName="Richard";//Form1Form2传值!!!
      myForm2.Password="pwd1234";
      DialogResult result= myForm2.ShowDialog();
     if(result==DialogResult.OK)
     {
         comboBox1.Items.Add(myForm2.UserName);////Form2Form1传值!!!
         comboBox2.Items.Add(myForm2.Password);
      }
}

要充分演示上述功能,还需要对Form2的代码作如下完善:
第1,在Form2_Load中添加如下代码:
private Form2_Load(object sender,EventArgs e)
{
    textBox1.Text=_username;
    textBox2.Text=_password;
}

第2,在textBox1、textBox2的textChanged事件中添加如下代码:

private void textBox1_TextChanged(objectsender,EventArgs e)
{
   this.UserName=textBox1.Text;
}
private voidtextBox2_TextChanged(objectsender,EventArgs e)
{
   this.Password=textBox2.Text;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值