У меня есть приложение winforms с основной формой (fMain) и двумя дочерними формами (fLogin и fAdmin). fLogin отображается с использованием этого кода, который находится в обработчике события нажатия кнопки для кнопки в главной форме:
// show login form; pass the main form in as an argument
fLogin formLogin = new fLogin(this);
formLogin.StartPosition = FormStartPosition.CenterParent;
formLogin.ShowDialog(this);
В конструкторе для fLogin я назначаю основную форму закрытой переменной уровня члена.
// fLogin
fMain _mainForm;
// fLogin constructor
public fLogin(fMain mainForm)
{
InitializeComponent();
_mainForm = mainForm;
}
Как вы можете себе представить, fLogin - это небольшая форма с текстовыми полями для имени пользователя и пароля и парой кнопок. Когда мои пользователи вводят свои учетные данные и нажимают кнопку OK, fLogin проверит информацию на сервере, и если информация верна, fLogin исчезнет и отобразится fAdmin. В настоящее время я отображаю fAdmin следующим образом:
// hide formLogin right away
this.Hide()
// show admin form
fAdmin formAdmin = new fAdmin();
formAdmin.StartPosition = FormStartPosition.CenterParent;
formAdmin.Show(_mainForm); // pass main form as owner of admin form
// close formLogin
this.Close();
Я не могу установить formAdmin.Parent = _mainForm и заставить диалог магически центрировать себя. Поэтому я передаю _mainForm в formAdmin.Show () как владелец formAdmin, но это, похоже, не помогает в отношении центрирования formAdmin. Есть ли простой способ заставить formAdmin отображаться в центре главной формы?