Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 设置ShowInTaskBar=False,在.net winforms中关闭无模式窗体时会导致闪烁_C#_.net_Vb.net_Winforms_Flicker - Fatal编程技术网

C# 设置ShowInTaskBar=False,在.net winforms中关闭无模式窗体时会导致闪烁

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

要重新创建此行为,您需要创建具有以下属性的弹出表单:

(1) ShowInTaskBar=False

(2) 使用Show方法和循环显示窗体,直到窗体不可见为止

(3) 为了在鼠标被点击出窗体时关闭窗体,请覆盖OnDeactivate,并将visible设置为False

接下来,创建另一个表单,单击按钮时显示弹出窗口:

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
这似乎也是边界的罪魁祸首