奇幻新游活动中心



没有任何事件的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);

}这将使完全停止内的控件闪烁。希望我能帮上忙。