Слабая пара модальный диалог - это возможно? - PullRequest
0 голосов
/ 06 января 2010

У меня есть библиотека пользовательских элементов управления пользовательского интерфейса winforms, которая содержит элемент управления для отображения модальных диалогов Picture-in-Picture.

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

    Dim f As New PiPCustomDialog       'this form wraps another form PictureInPicture style  
    f.FormToLoad = New PrintOptions()  'this is the form the user will interact with  
    f.Owner = Me                       'used to determine the size of PiPCustomDialog   
    Dim dr As DialogResult = f.ShowDialog(Me) 'shows PiPCustonDialog coating, f's OnLoad event initiates display of FormToLoad centered within.   

Тот факт, что для этого элемента управления требуется установить f.Owner, является вонючим. User32.dll имеет функцию GetActiveWindow (), которая может позволить элементу управления быть более самодостаточным.

Есть кто-нибудь, кто хотел бы научить эту старую собаку новому трюку? Я хочу узнать лучший способ.

1 Ответ

0 голосов
/ 07 января 2010

Сейчас я буду использовать это решение:

  • Удалить все проверки, которые требуют Владелец должен быть установлен перед показом Форма модально.
  • если владелец не установлен внутри класса, который является прозрачной обложкой (первая форма) - сделать системный вызов в
    GetActiveWindow, чтобы получить владельца, чтобы можно было установить размер окна.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...