在 Windows窗体中,创建多个面板(面板包含多个面板),每个面板具有不同的背景颜色,运行应用程序时,如果展开表单意味着, Panles摇晃几毫秒然后到达所需的位置。无法修复它。你能不能给我解决这个想法..
由于
Saravanan
答案 0 :(得分:1)
在表单的resize事件中,当您调整面板大小时,在开头添加Layout.Suspend(),在结尾添加Layout.Resume()。这应该可以阻止震动。
摇晃基本上是因为当表单大小发生变化,并且子面板接收到调整自身大小的触发器时,它们都会在给定布局中尝试调整自身时产生恐慌和混乱。暂停布局时,UI上不显示实际的实时混乱,并且抖动消失,但结果不是您可能想到的。但是,先试试然后再决定。
答案 1 :(得分:0)
修复了它。使用此代码以避免在展开窗体时抖动。它被称为Flicker。
使用NameSpace:
Using System.Runtime.InteropServices
创建一个类并编写代码:
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?