DataGridView绘制错误

问题描述 投票:0回答:2

我有一个表单,它有其他控件的色调(按钮、自定义控件、标签、面板、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 错误。实际上,这段代码在背景图像、线条和其他内容方面存在一些问题。为什么会这样以及如何解决?

c# datagridview flicker createparams
2个回答
3
投票

删除...现在堆栈溢出只是垃圾,没有帮助只是混蛋


1
投票

我发现平滑调整大小并显示网格线的技巧是,如果我的应用程序在 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;
    }
}
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.