WinForm弹出窗口与父项形成关系

本文关键字:关系 窗口 WinForm | 更新日期: 2023-09-27 18:23:52

好的,我有一个WinForms C#程序正在Visual Studio 2010学习版中编写。该程序有两种形式,一种是称为"MainForm"的主形式,另一种是名为"ConfigForm"的辅助形式。MainForm上有一个弹出ConfigForm的按钮。

    private void buttonConfig_Click(object sender, EventArgs e)
    {
        new ConfigForm().Show();
    }

现在,当你点击按钮时,ConfigForm会弹出到任何它感觉像的地方。它不一定会弹出在MainForm上。如何将它弹出到主窗体的顶部?我已经尝试将ConfigForm的StartPosition设置为CenterParent,但这似乎没有任何作用。

对于这个问题,如何在ConfigForm打开时"锁定"程序。当ConfigForm打开时,我更希望用户不能导航回MainForm。

WinForm弹出窗口与父项形成关系

您可能正在寻找这样的东西:

private void buttonConfig_Click(object sender, EventArgs e)
{
  using (ConfigForm cf = new ConfigForm()) {
    cf.ShowDialog(this);
  }
}

是的,确保ConfigForm.StartPosition = CenterParent如您所述。

在ConfigForm窗体上,您可以让按钮设置窗体的DialogResults,如下所示:

void buttonOK(object sender, EventArgs e) {
  this.DialogResult = DialogResult.OK;
  this.Close();
}

那么您的呼叫约定可以是:

private void buttonConfig_Click(object sender, EventArgs e)
{
  using (ConfigForm cf = new ConfigForm()) {
    if (cf.ShowDialog(this) == DialogResult.OK) {
      // do something the user said was ok
    }
  }
}

尝试使用ShowDialog方法。