【发布时间】:2013-04-13 07:47:58
【问题描述】:
我有表单大小的主面板并在上面放置了许多控件。我的问题是
当我在表单上单击(特别是在主面板的滚动条上的任何位置)时,它每次都会闪烁,这看起来很奇怪。
所以,任何人都可以告诉我这背后的原因是什么,或者建议我编写代码来阻止它。提前致谢。
【问题讨论】:
我有表单大小的主面板并在上面放置了许多控件。我的问题是
当我在表单上单击(特别是在主面板的滚动条上的任何位置)时,它每次都会闪烁,这看起来很奇怪。
所以,任何人都可以告诉我这背后的原因是什么,或者建议我编写代码来阻止它。提前致谢。
【问题讨论】:
在单个表单中添加大量控件并不好,但要在表单设置属性DoubleBuffered 到true 中停止闪烁
已编辑
制作一个自定义面板并将 DoubleBuffered 设置为 true:
public partial class CPanel : Panel
{
public CPanel ()
{
SetStyle(ControlStyles.AllPaintingInWmPaint, true);
SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
UpdateStyles();
}
}
如何 将新类插入到您的项目中,将其代码替换为:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace yournamespace
{
public partial class CPanel : Panel
{
public CPanel()
{
SetStyle(ControlStyles.AllPaintingInWmPaint, true);
SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
UpdateStyles();
}
}
}
构建您的application->转到您的form design->现在您在toolbox中有一个新控件:将新控件插入您的表单->将您的控件从旧面板复制到新面板
【讨论】: