winForm 中两个窗体的传值问题

本文介绍了在VSTO程序开发中三种窗体间传值的方法:全局变量的应用、父窗口向子窗口传值及子窗口向父窗口传值的具体实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 这段时间有在做VSTO的相关程序 源于网络 也不敢独享

1 全局变量
这个最简单,只要把变量描述成static就可以了,在form2中直接引用form1的变量,代码如下:
在form1中定义一个static变量public static int i= 9 ;
Form2中的钮扣按钮如下:
private void button1_Click(object sender, System.EventArgs e)
{textBox1.Text = Form1.i.ToString();}

但是用这个方法有的时候会有进程共享问题还是后面的方法更直接一些

2 父窗口传值给子窗口(Form1为主窗体,Form2为子窗体)
代码如下:
Form1中的代码:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void btnShow_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2();
//父窗体传值给子窗体
Form1 form1 = new Form1();
form2.String1 = "成功传值给Form2窗体!";
form2.SetValue();
form2.ShowDialog();
}
Form2中的代码:

private string String;
public string String1
{
get { return String; }
set { String = value; }
}
public void SetValue()
{
this.lblText.Text = String1;
}


3 子窗口传值给父窗口(Form1为主窗体,Form2为子窗体)

Form1中的代码:
private string strValue;

public string StrValue
{
get { return strValue; }
set { strValue = value; }
}
private void btnShow_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2();

//子窗体返回值给父窗体
form2.Owner = this;;//重要的一步,主要是使Form2的Owner指针指向Form1

form2.ShowDialog();
MessageBox.Show(StrValue);//显示返回的值

}
Form2中的代码:
private void btnclose_Click(object sender, EventArgs e)
{
Form1 form1 = (Form1)this.Owner;//把Form2的父窗口指针赋给lForm1
form1.StrValue = "子窗体成功返回值给父窗体!";//使用父窗口指针赋值

this.Close();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值