Mat*_*agé 7 .net modal-dialog winforms
我在vb.net中有一个应用程序,它以子函数开始做一些事情并决定它是否显示自己.当它显示自己时,它通过调用来实现dialog.ShowDialog()
.
当dialog.ShowDialog()
返回时,应用程序做一些清洁和两端.
我想找到一种暂时隐藏对话框(将其发送到系统托盘)而无需从ShowDialog()函数返回的方法.但是,只要me.Hide()
在表单的代码中执行a ,表单就会被有效隐藏,但ShowDialog()函数会返回并关闭进程.
我理解这是预期的行为.所以我的问题是如何才能获得这种效果?这是启动一个可以隐藏的对话框,并阻塞,直到用户真的想要退出应用程序.
如果隐藏对话框,则将从ShowDialog()返回.忘了试图改变它,你做不到.
您可以最小化对话框.
form1.WindowState = FormWindowState.Minimized;
Run Code Online (Sandbox Code Playgroud)
或者你可以将它放在屏幕上.
form.Left = -16384;
Run Code Online (Sandbox Code Playgroud)
或者你可以让它变得透明从C#修改任何窗口的不透明度
你无法做到这一点,当窗体隐藏时 ShowDialog() 将始终返回。诀窍是使用常规形式和对 Application.Run() 的正常调用,但要防止它立即可见。将此代码粘贴到您的表单类中:
Protected Overrides Sub SetVisibleCore(ByVal value As Boolean)
If Not IsHandleCreated Then
CreateHandle()
value = false
End If
MyBase.SetVisibleCore(value)
End Sub
Run Code Online (Sandbox Code Playgroud)
请注意,在表单实际可见之前,您的 Load 事件处理程序不会运行,因此请务必在 Sub New 构造函数中进行任何初始化。
归档时间: |
|
查看次数: |
10979 次 |
最近记录: |