图片如下链接:
http://hi.csdn.net/space-2633126-do-album-picid-939337.html代码大概就是:左边的TreeView MouseDown事件中写 TreeView1.BeginDrag(False);右边的ScrollBox DragDrop创建一个 Panel就算是加双缓冲,创建Panel后Update, Refresh, Application.ProcessMessages, Invalidate都不行。请达人指教。谢谢!

解决方案 »

  1.   

    顺便说明一下,拖放其它地方,比如任务栏,拖动的轨迹也会变黑,在一台 win2003的机器试过没有问题,在其它XP的系统也会变黑。高手来啊,自己顶下。
      

  2.   

    因为那里没有刷新,原因有很多,不过大多都是当前界面线程没来得及重绘区域,或者是主线程被阻塞不能重绘区域等等双缓冲只是防止界面闪烁的一种解决方案,如你把主线程阻塞了,不能及时刷新4缓冲也是不行的没有代码,先拍脑袋猜一下
    试试看
    1 mousedown里加一个标记点击即为true, mouseup里设为false
    2 拖动的时候判断下标记,false不处理
      

  3.   


    感谢你的关注我觉得最奇怪的问题是,为什么在拖动的过程中,TreeView的节点文字经过的路径会变黑色。我看过很多拖动的例子,也没见谁的要在拖动过程中要去刷新source,dest这两个控件。拖动只涉及到主线程,这里只是做一个简单的拖动, 应该不会阻塞界面刷新。
    不过我这个程序有点特别的是 左边的treeview是在一个Form上 ,dock在一个panel上,右边也是一个Form,创建在一个panel上。只是存在不是同一个窗体上的拖动。