C# 调整wpf元素主机大小时出现黑色闪回

C# 调整wpf元素主机大小时出现黑色闪回,c#,winforms,user-controls,elementhost,C#,Winforms,User Controls,Elementhost,我有一个WPF用户控件,它在Winform中显示为元素主机 当我快速改变屏幕大小或调整其大小时,我会在背景中看到一个黑色的闪回,直到用户控件达到合适的大小 我在好几个地方读到了这方面的消息。 我读到的所有地方都在谈论它只发生在用户控制负载中,并相应地提出解决方案 我在Resize上看到一个关于它的问题。但是这里提供的解决方案也是加载 我尝试调整屏幕大小以执行以下操作:UserControl.CreateGraphics(),它不会像上面回答的那样留下黑线 我想这是因为我在调整大小而不是加载时使

我有一个
WPF用户控件
,它在
Winform
中显示为
元素主机

当我快速改变屏幕大小或调整其大小时,我会在背景中看到一个黑色的闪回,直到用户控件达到合适的大小

我在好几个地方读到了这方面的消息。

我读到的所有地方都在谈论它只发生在用户控制负载中,并相应地提出解决方案

我在Resize上看到一个关于它的问题。但是这里提供的解决方案也是加载

我尝试调整屏幕大小以执行以下操作:
UserControl.CreateGraphics(),它不会像上面回答的那样留下黑线

我想这是因为我在调整大小而不是加载时使用了它。

此外,我什么也找不到


如果有人遇到这个问题并找到了一个解决方案,我很乐意回答。

在开发带有多个控件的窗体的windows应用程序时,我们通常会遇到一些闪烁的问题。消除这种闪烁的一种非常巧妙的方法是对整个窗体及其子控件进行双缓冲。但是,这不会加快控件绘制的速度,但会保持屏幕一段时间,只显示更新的屏幕而不是闪烁。为了实现这一点,我们需要启用WS_EX_COMPOSITED标志。只需将以下代码添加到表单的代码中

C#:

VB.net:

Protected Overrides ReadOnly Property CreateParams() As CreateParams
 Get
    Dim cp As CreateParams = MyBase.CreateParams
cp.ExStyle = cp.ExStyle Or &H2000000  
    Return cp 
  End Get
 End Property

对我有帮助的是我最终得到了以下几行代码(在
Winform
中):


我这样做了,它从屏幕上删除了(WPF的)所有控件。在某些地方,它们没有被删除,黑色方块变得更糟,不再闪回,而是永久保留。
Protected Overrides ReadOnly Property CreateParams() As CreateParams
 Get
    Dim cp As CreateParams = MyBase.CreateParams
cp.ExStyle = cp.ExStyle Or &H2000000  
    Return cp 
  End Get
 End Property
    protected override void OnResize(EventArgs e)
    {
        this.SuspendLayout();
        base.OnResize(e);
        this.ResumeLayout();
    }