0

我有一个WPF UserControl显示在Winformas中的Element Host

当我快速更改屏幕大小或调整大小时,我会在背景中看到黑色闪回,直到 UserControl 达到适当的大小。

我在几个地方读到过它。

我读到的所有地方都在谈论它只发生在UserControl 负载中并相应地带来解决方案。

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

调整元素主机大小时的黑色背景

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

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

此外,我什么也找不到。

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

4

2 回答 2

0

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

C#:

protected override CreateParams CreateParams
{
   get 
    {
    CreateParams cp = base.CreateParams;
    cp.ExStyle |= 0x02000000; 
    // Turn on WS_EX_COMPOSITED
   return cp;
   }
}

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
于 2013-09-11T07:34:13.037 回答
-2

最后是什么帮助了我,它遵循以下代码行(in Winform):

    protected override void OnResize(EventArgs e)
    {
        this.SuspendLayout();
        base.OnResize(e);
        this.ResumeLayout();
    }
于 2013-09-12T11:59:26.477 回答