如何在相同的 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
}