C# 设置ShowInTaskBar=False,在.net winforms中关闭无模式窗体时会导致闪烁
要重新创建此行为,您需要创建具有以下属性的弹出表单: (1) ShowInTaskBar=False (2) 使用Show方法和循环显示窗体,直到窗体不可见为止 (3) 为了在鼠标被点击出窗体时关闭窗体,请覆盖OnDeactivate,并将visible设置为False 接下来,创建另一个表单,单击按钮时显示弹出窗口:C# 设置ShowInTaskBar=False,在.net winforms中关闭无模式窗体时会导致闪烁,c#,.net,vb.net,winforms,flicker,C#,.net,Vb.net,Winforms,Flicker,要重新创建此行为,您需要创建具有以下属性的弹出表单: (1) ShowInTaskBar=False (2) 使用Show方法和循环显示窗体,直到窗体不可见为止 (3) 为了在鼠标被点击出窗体时关闭窗体,请覆盖OnDeactivate,并将visible设置为False 接下来,创建另一个表单,单击按钮时显示弹出窗口: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As Syste Using pop A
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As Syste
Using pop As New PopUp
pop.Visible = True
Do While pop.Visible
Application.DoEvents()
NativeMethods.MsgWaitForMultipleObjectsEx(0, IntPtr.Zero, 250, &HFF, 4)
Loop
Me.Activate()
End Using
End Sub
启动项目,展开表单以填充屏幕,然后单击按钮打开弹出窗口。
下一步,单击返回原始表单中的任意位置。
大多数时候,但并非总是,原始形状会消失一瞬间,然后再次出现,从而造成闪烁效果
深入研究reflector和System.Windows.Forms.Design.DropDownHolder,我在CreateParams中找到了以下解决闪烁问题的方法:
createParams.Style = (createParams.Style Or -2139095040)
不幸的是,它还在表单周围放置了一个黑色边框。(您必须设置FormBorderStyle=System.Windows.Forms.FormBorderStyle.None才能看到这一点。)
除了在表格周围加上黑色边框,还有人知道这种样式的作用吗
我用数字和十六进制等价物搜索过谷歌,但什么也找不到
谢谢
埃塔:我已经看了一个样式常量列表,但我不知道
-2139095040 = 0x80800000 = WS_POPUP | WS_BORDER
这似乎也是边界的罪魁祸首