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

时间:2012-02-09 21:08:27

标签: c# winforms

好的,我在Visual Studio 2010 Express中编写了一个WinForms C#程序。该程序有两种形式,主要形式称为“MainForm”,以及一种名为“ConfigForm”的辅助形式。 MainForm上有一个按钮,弹出ConfigForm。

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

现在,当您单击按钮时,ConfigForm会弹出任何感觉。它不一定会弹出MainForm。如何在主窗体上弹出它?我已经尝试将ConfigForm的StartPosition设置为CenterParent,但这似乎没有做任何事情。

就此而言,如何在ConfigForm打开时“锁定”程序。当ConfigForm打开时,如果用户无法导航回MainForm,我更愿意。

2 个答案:

答案 0 :(得分:7)

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

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
    }
  }
}

答案 1 :(得分:1)

尝试使用ShowDialog方法。