一个简单的关于两个list的例子,关键在于中间的两个按钮,我想在列表中没有数据的时候使之变灰,但是我把控制代码放在form_paint()里面会导致列表框数据移动时的残留影像不能及时擦除的鬼影现象。
哪位知道如何解决?还是我的控制代码放的位置不对?
vb我没什么经验,因为知道这些东西在vc里是放在ondraw()里处理的。不知vb里是不是也如此,找了半天就看paint()挺像干这档事的。没想到放里面会出现这个问题。我的原码上传在网上了,请用左键点机共享里的连接,然后选择直接下载即可。请dx帮忙看一下,先多谢了。
laolaode.vdisk.cn
keylist.rar大约2kb

解决方案 »

  1.   

    把代码放到private sub form1_resize() 中试试
      

  2.   

    因为你在FORM的PAINT事件中使用了:Me.Refresh '此处的命令导致鬼影现象
    这种用法是不对的,它将导致PAINT不断调用自身,这是一个严重的错误这叫做:层叠事件;它的结果也就是你看到的鬼影现象。
    所以你只能采用其它的方法来实现你的要求,比如在对两个listbox操作后都检测其ListCount然后(可以作为一个SUB)
      

  3.   

    //vb我没什么经验,因为知道这些东西在vc里是放在ondraw()里处理的。不知vb里是不是也如此,找了半天就看paint()挺像干这档事的。没想到放里面会出现这个问题。在vb中重绘一般都是在模块中通过子类化完成
      

  4.   

    这个你用一个在时钟来,大概500数值的时候检测ListCount的变化
      这样我想是白百的消耗你的资源,如果你的系统 不是很大,可以试试看
      

  5.   

    "在时钟来",实在不明白是什么
    另外很多软件里都有这种根据条件enabled按钮的功能,他们都是怎么实现的呢?
      

  6.   

    你从LIST中移了的时候去判断一下,LIST是否为空,为空变灰.
      

  7.   

    是啊我也想过这么做,但如果我这个窗体中有很多list就糟了,每个表都要去判断,岂不麻烦