闪烁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?
在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?