.NET CF v1的Form.ShowDialog(Me)里的Me在不能用了!

(華)

又碰釘子了~ 一般要创建一个model dialog,我门都会用Form.ShowDialog();但。。。问题就是此ShowDialog()只会创建一个没有Owner的model dialog,所以新创建的model dialog是和main程序拥有相同的parent window。。。就是desktop window了。这样就会造成用户能够同过Running Program里activate main程序的windows去top level window,这样。。。ShowDialog()就不能再达到如.NET Framework里的ShowDialog(Me)的效果。

此问题已在.NET CF v2里解决了,但在期待.NET CF v2的面世之余。。。以下就是两个不同的解决方案,不防讨论下。

方案一:

'把Form1的Text从Running Program里删除掉
Me.Text = ""

Dim frm As New Form2
'把mdel dialog的Text换去跟Form1.Text一样(不如说Demo)所以能够出现在Running Program List里
frm.Text = "Demo"
'创建model dialog
frm.ShowDialog()
'还原Form1的Text,所以可以出先在Running Program里
Me.Text = "Demo"

'确定Form1就是下一个visible top level window
Me.Capture = True
'此是两个Win32API,详细请游览http://www.pinvokenet
SetForegroundWindow(GetCapture())
Me.Capture = False

方案二:
'把Form1 hide起来
Me.Hide()

Dim frm As New Form2
'创建model dialog
frm.ShowDialog()

'把Form1 show出来
Me.Show()

posted on 2005-07-08 08:45  克仔  阅读(1649)  评论(2编辑  收藏  举报