У меня есть библиотека пользовательских элементов управления пользовательского интерфейса 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 (), которая может позволить элементу управления быть более самодостаточным.
Есть кто-нибудь, кто хотел бы научить эту старую собаку новому трюку? Я хочу узнать лучший способ.