【问题标题】:Flickering issue in Windows FormsWindows 窗体中的闪烁问题
【发布时间】:2014-04-03 23:47:47
【问题描述】:

我的控件闪烁有问题。我有拖放操作,当拖动控件时,它会闪烁。我该如何解决?我试过这个

 public Form1()
    {
        InitializeComponent();
        .
        .
        .
        this.DoubleBuffered = true;
    }

但对我没有用。我该如何解决?

【问题讨论】:

  • 什么类型的控件在闪烁?您包含了一个用户控件标签。您的 DoubleBuffered 设置仅适用于表单,不适用于控件。
  • 我的控件是 Panels LarsTech
  • 谢谢。我看到这个问题的答案是 stackoverflow.com/a/77233/1699916 现在是一个问题,什么是 SetDoubleBuffered ?它是一个事件还是只是一个方法? if 方法必须在哪里调用?
  • 这是您在表单的构造函数或 OnLoad 方法(Load 事件)中调用的方法。

标签: c# windows winforms user-controls flicker


【解决方案1】:
public static void SetDoubleBuffered(System.Windows.Forms.Control c)
{
   //Taxes: Remote Desktop Connection and painting
   //http://blogs.msdn.com/oldnewthing/archive/2006/01/03/508694.aspx
   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); 
}

这个方法很有帮助。

取自这里

stackoverflow.com/a/77233/1699916

【讨论】:

  • 请不要在此处重复答案。如果这对您有用,那么您的问题应该作为副本关闭。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-10
  • 2011-11-22
  • 1970-01-01
  • 2011-03-18
  • 2019-01-09
  • 1970-01-01
  • 2013-04-07
相关资源
最近更新 更多