Всплывающее окно WinForm формирует отношения с родителем - PullRequest
3 голосов
/ 10 февраля 2012

Хорошо, у меня есть программа WinForms C #, которую я пишу в Visual Studio 2010 Express.Эта программа имеет две формы: основную форму с именем «MainForm» и дополнительную форму с именем «ConfigForm».У MainForm есть кнопка, которая вызывает ConfigForm.

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

Прямо сейчас, когда вы нажимаете кнопку, ConfigForm выскакивает там, где ему хочется.Это не обязательно всплывает над MainForm.Как мне заставить его всплывающее окно поверх основной формы?Я попытался установить StartPosition в ConfigForm на CenterParent, но это, похоже, ничего не делает.

В этом отношении, как мне "заблокировать" программу, когда ConfigForm открыт.Когда ConfigForm открыт, я бы предпочел, чтобы у пользователя не было возможности вернуться обратно к MainForm.

Ответы [ 2 ]

7 голосов
/ 10 февраля 2012

Вы, вероятно, ищете что-то вроде этого:

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 голос
/ 10 февраля 2012

Попробуйте использовать метод ShowDialog.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...