松散地结合模态对话 - 这可能吗?

时间:2010-01-06 15:32:31

标签: winforms user-interface

我有一个winforms自定义UI控件库,其中包含一个用于显示模态对话框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有一个函数Ge​​tActiveWindow(),它可能允许控件更自给自足。

有谁愿意教这条老狗一个新的伎俩?我想学习更好的方法。

1 个答案:

答案 0 :(得分:0)

我现在将使用此解决方案:

  • 删除所需的任何验证 在显示之前设置所有者 形式模态。
  • 如果所有者未设置在透明封面的类中 (第一种形式) - 进行系统调用 GetActiveWindow获取所有者,以便可以设置窗口的大小。