没有任何事件的Treeview闪烁
我想通了。结果是,当TreeView (也许另一个控件可能有相同的问题)在SplitContainer中引起闪烁问题时。我尝试了一个非常简单的原型,一个新的Winform,其中一个容器中只有一个SplitContainer和一个TreeView,我已经可以看到一些节点上的闪烁。我尝试了很多事情,但似乎已经完成的任务是:
代码语言:javascript复制this.SetStyle(ControlStyles.DoubleBuffer, true);另一件完全排除所有闪烁的事情是:
代码语言:javascript复制int style = NativeWinAPI.GetWindowLong(this.Handle, NativeWindowAPI.GWL_EXSTYLE);
style |= NativeWinAPI.WS_EX_COMPOSITED;
NativeWinAPI.SetWindowLong(this.Handle, NativeWinAPI.GWL_EXSTYLE, style);都在Form_Load里面。
NativeWinAPI类:
代码语言:javascript复制using System.Runtime.InteropServices;
internal static class NativeWinAPI
{
internal static readonly int GWL_EXSTYLE = -20;
internal static readonly int WS_EX_COMPOSITE = 0x02000000;
[DllImport("user32")]
internal static extern int GetWindowLong(IntPtr hWnd, int nIndex);
[DllImport("user32")]
internal static extern int SetWindowLong(IntPtr hWnd, int nIndex, dwNewLong);
}这将使完全停止内的控件闪烁。希望我能帮上忙。