Подтвердить что ты не робот

Как я могу управлять расположением диалога при использовании ShowDialog для его отображения?

Это очень тривиальная проблема, но я не могу найти способ ее решения. Это раздражает меня, потому что я чувствую, что должен знать ответ на этот вопрос, но я либо искал неправильные термины, либо искал неправильные методы и свойства.

У меня есть диалог конфигурации, который вызывается из двух мест.

Первый - это кнопка, которая работает правильно - как и следовало ожидать.

Второй из контекстного меню на notifyIcon в системном трее, но здесь он отображается в верхнем левом углу экрана. В идеале я бы хотел, чтобы он отображался в центре экрана основного экрана или, возможно, рядом с системным лотком.

  • Я попытался установить Location, но это, кажется, переопределено при вызове dialog.ShowDialog().

  • Я попытался использовать перегрузку dialog.ShowDialog(IWin32Window), но мне не показалось, что я передаю null в качестве дескриптора окна.

  • Я попытался использовать dialog.Show() вместо этого, но (и это то, где я мог бы ошибиться), установка местоположения, похоже, не дает согласованных результатов.

  • Я даже попытался установить свойство dialog.Parent, которое, конечно же, вызвало исключение.

Я просто знаю, что я пойму, что ответ очевиден, когда я (надеюсь) вижу некоторые ответы, но на данный момент я полностью застрял.

Спасибо за ответы - как я подозревал, это было очевидно, но, как обычно, я застрял в том, что смотрел вниз по неправильному маршруту. Еще более неприятно то, что я тоже использовал это свойство у дизайнера.

4b9b3361

Ответ 1

Вы можете установить свойство Form.StartPosition в FormStartPosition.Manual, а затем установить Form.Location в нужное место. Когда вы вызываете ShowDialog, форма должна отображаться в нужном месте.

MyForm frm = new MyForm();
frm.StartPosition = FormStartPosition.Manual;
frm.Location = new Point(10, 10);
frm.ShowDialog();

Ответ 2

Я предполагаю, что вы используете форму, и в этом случае вы можете использовать перечисление Form.StartPosition. Вы можете узнать об этом здесь и поведение перечисления здесь.

Ответ 3

Попробуйте свойство StartPosition в форме.