如何在相同的 Windows 窗体实例之间传递变量值
How to pass variable value between identical instances of WindowsForm
我有一个基本形式 From1
。在单击按钮时的表单中,将创建新表单 From2
。
private void Button_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.Show();
}
用户可以创建 From2
的多个实例。在 From2
中,用户可以在 textBox 中设置一个值并单击一个按钮。一旦它被点击,textBox 的值必须以某种方式转移到 From2
的所有其他创建的实例。我该怎么做?
第 1 步:记住您创建的所有表单。
private void Button_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
allForms.Add(f2); // remember it
f2.Show();
}
第 2 步:当值发生变化时,更新所有记住的表格
private void textbox1_TextChanged(object sender, EventArgs e)
{
foreach (Form2 form in allForms)
{
form.MyValue = textbox1.Text;
}
}
就这样写代码,然后让 IDE 帮助您创建属性并相应地调整可见性,例如让 IDE 帮助您在 Form2 中实现一个 属性 来设置文本
string MyValue
{
set
{
anotherTextbox.Text = value;
}
}
然后您会发现您可能还需要一些东西。
第 3 步:关闭时从列表中删除表单。
private void Button_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
allForms.Add(f2);
f2.Closed += OnClose; // Method to be called when form is closed
f2.Show();
}
private void OnClose(object sender, EventArgs e)
{
Form2 form = (Form2) sender;
form.Closed -= OnClose; // Unregister event handler
allForms.Remove(form); // remove it
}
我有一个基本形式 From1
。在单击按钮时的表单中,将创建新表单 From2
。
private void Button_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.Show();
}
用户可以创建 From2
的多个实例。在 From2
中,用户可以在 textBox 中设置一个值并单击一个按钮。一旦它被点击,textBox 的值必须以某种方式转移到 From2
的所有其他创建的实例。我该怎么做?
第 1 步:记住您创建的所有表单。
private void Button_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
allForms.Add(f2); // remember it
f2.Show();
}
第 2 步:当值发生变化时,更新所有记住的表格
private void textbox1_TextChanged(object sender, EventArgs e)
{
foreach (Form2 form in allForms)
{
form.MyValue = textbox1.Text;
}
}
就这样写代码,然后让 IDE 帮助您创建属性并相应地调整可见性,例如让 IDE 帮助您在 Form2 中实现一个 属性 来设置文本
string MyValue
{
set
{
anotherTextbox.Text = value;
}
}
然后您会发现您可能还需要一些东西。
第 3 步:关闭时从列表中删除表单。
private void Button_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
allForms.Add(f2);
f2.Closed += OnClose; // Method to be called when form is closed
f2.Show();
}
private void OnClose(object sender, EventArgs e)
{
Form2 form = (Form2) sender;
form.Closed -= OnClose; // Unregister event handler
allForms.Remove(form); // remove it
}