我有一个表单,它有其他控件的色调(按钮、自定义控件、标签、面板、gridview)。你可以猜到我有闪烁问题。我尝试了双缓冲,但无法解决。最后我尝试了这个:
protected override CreateParams CreateParams
{
get
{
// Activate double buffering at the form level. All child controls will be double buffered as well.
CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x02000000; // WS_EX_COMPOSITED
return cp;
}
}
闪烁消失了,但我的 datagridview 绘制错误。它显示 CellBorders、BorderColors 错误。实际上,这段代码在背景图像、线条和其他内容方面存在一些问题。为什么会这样以及如何解决?
删除...现在堆栈溢出只是垃圾,没有帮助只是混蛋
我发现平滑调整大小并显示网格线的技巧是,如果我的应用程序在 Windows XP 或 Windows Server 2003 下运行,则添加一个附加标志:
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x02000000; // Turn on WS_EX_COMPOSITED
if (this.IsXpOr2003 == true)
cp.ExStyle |= 0x00080000; // Turn on WS_EX_LAYERED
return cp;
}
}
private Boolean IsXpOr2003
{
get
{
OperatingSystem os = Environment.OSVersion;
Version vs = os.Version;
if (os.Platform == PlatformID.Win32NT)
if ((vs.Major == 5) && (vs.Minor != 0))
return true;
else
return false;
else
return false;
}
}