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

Jas*_*rod 3 c# winforms

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

    private void buttonConfig_Click(object sender, EventArgs e)
    {
        new ConfigForm().Show();
    }
Run Code Online (Sandbox Code Playgroud)

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

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

Lar*_*ech 7

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

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

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

在ConfigForm表单中,您可以设置DialogResults表单的按钮,如下所示:

void buttonOK(object sender, EventArgs e) {
  this.DialogResult = DialogResult.OK;
  this.Close();
}
Run Code Online (Sandbox Code Playgroud)

然后你的调用约定可以是:

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
    }
  }
}
Run Code Online (Sandbox Code Playgroud)