listbox使用的问题:
我的listbox中是很多编辑框,在使用的时候,用户向下拖动滚动条,然后编辑,重复这个动作,直到编辑好所有的editbox.
但是我发现一个问题,每次详细拖动滑动条的时候,都会出现“重影”情况。
也就是说,用户向下拖动滚动条时,上一个editbox中的内容,没有被及时擦除!
这种情况怎样处理?
我用的是DrawItem()函数。
那位大虾帮帮忙,不胜感激!!!!!!!!!!!!!!!!!!!!!!!!1

解决方案 »

  1.   

    一般用UpdateData()就会刷新,
    如果不行,用Invalidate()试试
      

  2.   

    zhucde(【风间苍月】) 
    不好用啊
      

  3.   

    我不太明白你得意思,但是好像跟我以前遇到得一个情况类似,你把一个CEdit放到Listbox中作为编辑框?然后移动得时候需要把CEdit也移动到相应得位置,但是这个时候原有得CEdit中得内容没有被擦出是么?我以前遇到得时候是因为引发重画CEdit得事件顺序设置得不对造成得,你检查一下你是否也是因为这个原因
      

  4.   

    我的LISTBOX在拖动的时候,并不移动EDITBOX,只有用户点击某一个位置,开始编辑的时候,才会将EDITBOX移动到那个位置。
    我的问题是,拖动滚动条的时候,原有内容残留在原位置。
      

  5.   

    先说清楚“原有内容”是EditBox中的内容,还是ListBox中的内容。
      

  6.   

    在拖动前用SetRedraw(0);
    后用SetRedraw(1);试试
      

  7.   

    osborn(SEANX) ( ) 
    回答:“原内容”是editbox的内容
      

  8.   

    那么就需要在ListBox的OnVScroll中用m_editBox.SetWindowText(str);来更新。而且ListBox要设置WS_CLIPCHILDREN风格。
      

  9.   

    我的editbox是根据用户点击的位置,动态产生的。在用户编辑完其中的内容后,将值存在一个数组中,数祖是和listbox中的每一个item对应的。
    当用户拖动滑动条时,DrawItem()函数就会根据每个item对应的数组单元的内容,重新绘制listbox的内容。
    但是在拖动的时候,会有“数值残留“现象,例如:第n条item已经被拖到上面,第n+1条上所显示的内容,竟然是第n条的。
    那位大虾能帮个忙啊??????????
      

  10.   

    是不是显示第n+1条时第n条item没有被清空
      

  11.   

    DrawItem()中应该根据滚动条的位置进行重画。拖动滚动条的时候会产生无效区,不知道你怎么处理的。
      

  12.   

    osborn(SEANX) 
    mail发给你了。这是我做的一个演示程序。多谢你的帮助!