C# 将变量从Form2发送到Form1
我想知道如何将变量从Form2发送到Form1。我在表格1中有一个文本框和按钮,在表格2中有一个文本框和按钮。我的应用程序从Form1开始,textbox1为空,单击按钮Form2将显示。在Form2中,我想写下数字,然后单击按钮将其发送到Form1文本框 我正在尝试这个代码,但我不知道如何解决它 表格1代码:C# 将变量从Form2发送到Form1,c#,winforms,C#,Winforms,我想知道如何将变量从Form2发送到Form1。我在表格1中有一个文本框和按钮,在表格2中有一个文本框和按钮。我的应用程序从Form1开始,textbox1为空,单击按钮Form2将显示。在Form2中,我想写下数字,然后单击按钮将其发送到Form1文本框 我正在尝试这个代码,但我不知道如何解决它 表格1代码: public static int number; public Form1() { InitializeComponent(); } private void button1_
public static int number;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form2 form = new Form2();
form.Show();
}
表格2代码
public Form2()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form1.number = textBox1.Text;
this.Visible = false;
}
现在我在Form1中有一个名为number的变量,它包含Form2文本框的值,对吗?但我该如何说:textbox1.text(Form1)=动作后的数字?我需要刷新Form1吗
谢谢 我想说,做这类事情的一个简单方法是通过举办一次公开活动: 在表格2中,添加一个事件:
public partial Class Form2
{
public event Action<string> SomethingHappened;
...
然后,在创建“订阅”父窗体Form1
以对子窗体执行操作时:
Form2 form = new Form2();
//Here, we assign an event handler
form.SomethingHappened += (string valueFromForm2) =>
{
//Event handled on Form1
this.Number = valueFromForm2;
};
这个设置听起来有点像一个设置对话框,在关闭Form2之前,您无法在Form1中继续 如果是这种情况,那么更像他的东西在表格1中是合适的:
public partial class Form1 : Form
{
private int number = 411;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
this.textBox1.Enabled = false;
this.textBox1.Text = number.ToString();
}
private void button1_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2(this.number);
if (f2.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
this.number = f2.Number;
this.textBox1.Text = this.number.ToString();
}
}
}
Form2看起来像:
public partial class Form2 : Form
{
public Form2(int number)
{
InitializeComponent();
this.textBox1.Text = number.ToString();
}
private int number = 0;
public int Number
{
get { return this.number; }
}
private void btnOK_Click(object sender, EventArgs e)
{
int value;
if (int.TryParse(this.textBox1.Text, out value))
{
this.number = value;
this.DialogResult = System.Windows.Forms.DialogResult.OK;
}
else
{
MessageBox.Show(textBox1.Text, "Invalid Integer");
}
}
}
他的表单不是模态对话框。@没错,描述中没有明确说明它是……但作者可能没有很好地描述它,或者没有意识到他们在寻找什么。我可能错了;这不是第一次了
public partial class Form2 : Form
{
public Form2(int number)
{
InitializeComponent();
this.textBox1.Text = number.ToString();
}
private int number = 0;
public int Number
{
get { return this.number; }
}
private void btnOK_Click(object sender, EventArgs e)
{
int value;
if (int.TryParse(this.textBox1.Text, out value))
{
this.number = value;
this.DialogResult = System.Windows.Forms.DialogResult.OK;
}
else
{
MessageBox.Show(textBox1.Text, "Invalid Integer");
}
}
}