.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
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()
Me.Hide()
Dim frm As New Form2
'创建model dialog
frm.ShowDialog()
'把Form1 show出来
Me.Show()