[英]Sending variables from Form2 to Form1
我想知道如何將變量從Form2發送到Form1。 我在Form1中有一個文本框和按鈕,在Form2中有一個文本框和按鈕。 我的應用程序從Form1開始,textbox1為空,單擊Form2按鈕將出現。 在Form2中,我想輸入數字,然后單擊按鈕將其發送到Form1文本框。
我正在嘗試此代碼,但我不知道如何解決它。
Form1代碼:
public static int number;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form2 form = new Form2();
form.Show();
}
Form2代碼
public Form2()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form1.number = textBox1.Text;
this.Visible = false;
}
現在我在Form1中有一個名為number的變量,其中包含Form2 Textbox的值,對嗎? 但是我怎么說:textbox1.text(Form1)=該操作之后的數字? 我是否需要以某種方式刷新Form1?
謝謝!
我想說,做這種事情的一種好方法是通過公開事件:
在第二種形式中,添加一個事件:
public partial Class Form2
{
public event Action<string> SomethingHappened;
...
我們需要在Form2
上觸發該事件-通知訂閱者:
//On Form2
private void button1_Click(object sender, EventArgs e)
{
if(SomethingHappened != null)
SomethingHappened (textBox1.Text);
}
然后,在創建后,“訂閱”父表單Form1
以對子表單進行操作:
Form2 form = new Form2();
//Here, we assign an event handler
form.SomethingHappened += (string valueFromForm2) =>
{
//Event handled on Form1
this.Number = valueFromForm2;
};
該設置聽起來有點像設置對話框,在該對話框中,直到關閉Form2后才能在Form1中繼續。
如果是這種情況,那么在Form1中更適合使用他的方法:
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");
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.