У меня есть код, который вызывает перегрузку form.ShowDialog(IWin32Window)
, а не form.ShowDialog()
, но который передает текущее активное окно в качестве параметра.
Использование другой перегрузки, похоже, не повлияет на поведение. Безопасно ли переходить на более простую перегрузку? Когда мне нужно передать параметр IWin32Window?
3 ответа
Параметр IWin32Window
предназначен для указания владельца диалога. В данном случае это интерфейс, так что вы можете иметь неуправляемые окна (например, из COM-объекта, который вы используете) в качестве владельца диалогового окна.
Я не могу согласиться с теми пользователями, которые говорят, что вам не следует указывать владельца. Фактически, всегда рекомендуется указывать владельца формы, когда это возможно. Хотя диалоги могут быть не так важны, как немодальные формы, всегда полезно иметь привычку указывать владельца.
Вы можете использовать параметр IWin32Window, если хотите создать родительскую форму для формы в другом приложении или форме.
Так, например, вы можете получить дескриптор другого приложения или формы и показать свою форму как часть этого приложения. Дополнительную информацию можно найти здесь
При нормальных обстоятельствах вы должны использовать конструктор void. Как сказал Натан, используйте конструктор IWin32Window только в том случае, если вы хотите показать диалог с конкретным владельцем. Обычно в этом нет необходимости.
В документации для ShowDialog () указано: «Показывает форму как модальное диалоговое окно с текущим активным окном, установленным в качестве его владельца». Итак, если вам явно не нужно установить владельцем формы окно, которое НЕ является активным окном, нет необходимости использовать ShowDialog (IWin32Window).
Похожие вопросы
Новые вопросы
.net
НЕ используйте для вопросов о .NET Core - используйте вместо этого [.net-core]. .NET Framework - это программная среда, предназначенная главным образом для операционной системы Microsoft Windows. Он включает в себя реализацию библиотеки базовых классов, общеязыковой среды выполнения (обычно называемой CLR), общей системы типов (обычно называемой CTS) и динамической среды исполнения. Он поддерживает множество языков программирования, включая C #, VB.NET, F # и C ++ / CLI.