闪烁windows表格

Flickering windows form

Windows表单中,创建了多个面板(面板包含多个面板)并且每个面板具有不同的背景颜色,当运行应用程序时,如果展开形式意味着,Panles得到摇动几毫秒,然后达到所需 place.Can 不修复它。你能给我解决这个问题的想法吗..

谢谢

萨拉瓦南

在表单的调整大小事件中,当您调整面板大小时,在开头添加 Layout.Suspend() 并在结尾添加 Layout.Resume()。这样应该可以停止摇晃。

抖动基本上是因为当表单大小发生变化时,子面板收到调整自身大小的触发器,它们都会在它们之间制造恐慌和混乱,试图在给定的布局中调整自己。当您暂停布局时,实际的现场混乱不会显示在 UI 上并且抖动消失,但结果可能不是您想象的那样。不过还是先试试再决定吧。

修复了 it.Use 此代码以避免在展开 windows 表单时出现抖动。它的确切名称是闪烁。

使用命名空间:

Using System.Runtime.InteropServices

创建一个class并编写代码:

internal static class NativeWinAPI
{
    internal static readonly int GWL_EXSTYLE = -20;
    internal static readonly int WS_EX_COMPOSITED = 0x02000000;

    [DllImport("user32")]
    internal static extern int GetWindowLong(IntPtr hWnd, int nIndex);

    [DllImport("user32")]
    internal static extern int SetWindowLong(IntPtr hWnd, int nIndex, int     dwNewLong);
}    

并在表单构造函数中添加代码:

public MyForm()
{
    InitializeComponent();

    int style = NativeWinAPI.GetWindowLong(this.Handle,NativeWinAPI.GWL_EXSTYLE);
    style |= NativeWinAPI.WS_EX_COMPOSITED;
    NativeWinAPI.SetWindowLong(this.Handle, NativeWinAPI.GWL_EXSTYLE, style);
}

我得到这个结果来自: Avoid Flickering in Windows Forms?