none
TreeView控件节点闪烁问题 RRS feed

  • 问题

  • 环境:VS2005 C# WinForm windows7

    在Form1上放一个TreeView控件,里面放两三个根结点,根结点下包含几个子节点,所有这些在VS设计器里完成。

    运行显示Form1,把鼠标在TreeView的节点上来回移动,会发现下面的节点有明显抖动。

    我在VS本身右侧的“解决方案资源管理器”的树状控件里移动鼠标,也会产生节点抖动。

    如果把Program里的Application.EnableVisualStyles();去掉,则treeView不会产生上面所说的抖动,但是对其它控件外观影响太大了。

    不知是我系统有问题,还是VS2005有问题?

     

    2012年1月27日 2:12

答案

  • dear

    1.DoubleBuffered在控件里是属于非公开的属性必须要用反射,但Form里的DoubleBuffered是公开属性,可直接指定this.DoubleBuffered = true

    http://www.dotblogs.com.tw/yc421206/archive/2010/10/20/18472.aspx

    2.不知你的节点有做啥动作,建议处理节点前呼叫BeginUpdate(),处理后呼叫EndUpdate()

                this.treeView1.BeginUpdate();
                //节点操作
                this.treeView1.EndUpdate();


    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/
    2012年1月30日 9:54

全部回复

  • 請您試一下,Control.DoubleBuffered 属性

    DoubleBuffered = true


    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/
    2012年1月27日 3:28
  • treeview没找到DoubleBuffered属性啊
    2012年1月27日 13:37
  • Hi Win32FanEx,

    欢迎来到MSDN论坛!

    根据这篇文档,TreeView 控件从.NET 2.0开始,就有了DoubleBuffered 属性了. 

    您可以考虑直接设置 treeView1.DoubleBuffered = true;

     

    因为没有安装VisualStudio2005, 我无法重现您所描述的两个问题; 而我目前所使用的VisualStudio2010, 不存在您所描述的这个问题. 即TreeView控件并没有发现,鼠标滑过节点,出现闪烁.

    您可以尝试下 VisualStudio2010 Express 版本,这个版本目前是免费的:

    http://www.microsoft.com/visualstudio/en-us/products/2010-editions/express

    谢谢!

    yoyo


    Yoyo Jiang[MSFT]
    MSDN Community Support | Feedback to us
    2012年1月30日 9:05
    版主
  • dear

    1.DoubleBuffered在控件里是属于非公开的属性必须要用反射,但Form里的DoubleBuffered是公开属性,可直接指定this.DoubleBuffered = true

    http://www.dotblogs.com.tw/yc421206/archive/2010/10/20/18472.aspx

    2.不知你的节点有做啥动作,建议处理节点前呼叫BeginUpdate(),处理后呼叫EndUpdate()

                this.treeView1.BeginUpdate();
                //节点操作
                this.treeView1.EndUpdate();


    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/
    2012年1月30日 9:54
  • Hi Win32FanEx,

    您的问题处理的怎么样了?

    我暂时把余小章的回复标记为答案,如果您觉得有任何不妥,可以Unmark为这条回复。

    如果您有任何问题,请您告诉我们!

    谢谢您的理解!

    祝,顺利!

    yoyo


    Yoyo Jiang[MSFT]
    MSDN Community Support | Feedback to us
    2012年2月6日 5:40
    版主