【问题标题】:How can I Stop Blinking my form on each click on Window form?如何在每次点击 Window 表单时停止闪烁我的表单?
【发布时间】:2013-04-13 07:47:58
【问题描述】:

我有表单大小的主面板并在上面放置了许多控件。我的问题是

当我在表单上单击(特别是在主面板的滚动条上的任何位置)时,它每次都会闪烁,这看起来很奇怪。

所以,任何人都可以告诉我这背后的原因是什么,或者建议我编写代码来阻止它。提前致谢。

【问题讨论】:

标签: c# .net forms panel


【解决方案1】:

在单个表单中添加大量控件并不好,但要在表单设置属性DoubleBufferedtrue 中停止闪烁

已编辑

制作一个自定义面板并将 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中有一个新控件:将新控件插入您的表单->将您的控件从旧面板复制到新面板

【讨论】:

  • 大约 50 个,但在我的上一个应用程序中,我还添加了太多控件,但效果很好
  • 我应该把 CPanel(above) 方法的主体放到我的主面板主体中吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-07
  • 1970-01-01
  • 2021-10-23
相关资源
最近更新 更多