过去几个月我一直在做一个项目,但有一个我无法解决的问题。我有一个带有控件的 Windows 窗体。当用户更改控件大小时,应用程序会触发 sizechanged 事件,然后我相应地在其上移动控件。主要问题在于按钮,因为它们有图像 - 实际上更准确地说 - 它们是平坦的,没有边框,并且上面有一个实际上是绘制按钮的图像(我不通过代码绘制它的原因是因为图像很复杂)。在某些机器上,当应用程序调整大小时,它们开始闪烁。Form 设置为 DoubleBuffered true,我使用此函数在按钮上设置双缓冲。
public static void SetDoubleBuffered(System.Windows.Forms.Control c)
{
if (System.Windows.Forms.SystemInformation.TerminalServerSession)
return;
System.Reflection.PropertyInfo aProp =
typeof(System.Windows.Forms.Control).GetProperty(
"DoubleBuffered",
System.Reflection.BindingFlags.NonPublic |
System.Reflection.BindingFlags.Instance);
aProp.SetValue(c, true, null);
}
有什么建议么?