C# 从另一个窗体调用侦听器

C# 从另一个窗体调用侦听器,c#,listener,C#,Listener,我的主窗体显示一些信息,同样的信息可以在第二个窗体中编辑。主页中的信息从数据库加载(到DGV),并在触发TabControl listener时加载。在第二个表单中,我有一个按钮可以更改数据库中的信息,当我更改它时,我的主表单会显示错误的信息,直到我自己实际触发TabControl侦听器。当我在第二个窗体中单击按钮时,如何使TabControl listener自动调用?如果第二个窗体是一个弹出对话框,将完成并关闭,您可以这样做: SecondForm secondForm = new Seco

我的主窗体显示一些信息,同样的信息可以在第二个窗体中编辑。主页中的信息从数据库加载(到DGV),并在触发TabControl listener时加载。在第二个表单中,我有一个按钮可以更改数据库中的信息,当我更改它时,我的主表单会显示错误的信息,直到我自己实际触发TabControl侦听器。当我在第二个窗体中单击按钮时,如何使TabControl listener自动调用?

如果第二个窗体是一个弹出对话框,将完成并关闭,您可以这样做:

SecondForm secondForm = new SecondForm();
secondForm.ShowDialog();

// ShowDialog will block until the new form is closed.

RefreshData(); // we know that the user is done with the second form, so we can check for changes here.
否则,您可以传入对父窗体的引用,并根据需要从子窗体更新它。在您的家长表格中:

SecondForm secondForm = new SecondForm(this); // pass a reference to the parent form into the child form's constructor
secondForm.Show(); // unlike ShowDialog(), Show() will not block the parent form.  The user can use both forms at the same time.
然后在您的子表单中:

FirstForm ParentForm { get; set; }

public SecondForm(FirstForm parent)
{
    InitializeComponent();
    this.ParentForm = parent; // store the reference for later use
}

private void button1_Click(object sender, EventArgs e)
{
    ParentForm.Name = txtName.Text; // set a public property on the parent form
    ParentForm.Address = txtAddress.Text;

}

第二个建议更好,因为我希望能够同时使用这两种形式