This project is read-only.
1

Closed

listBox控件重大问题【解决方法】

description

刚才已经给你发过短消息,错误原因如下:
 
void list_DrawItem 事件执行优先级要高于void list_ItemSelected
 
于是在list_DrawItem事件里的 这段代码:if (e.ItemIndex == list.LastClickedIndex)
记录的永远都是上一次点击的itemIndex,所以这个方法会重复执行两次,一次是判断上一次是否相等,另一次是判断这次是否相等。所以会出现看起来有两个选项被选中的样子。
 
解决方法:
事件外面设置了个变量用于保存上一次的值。初始化int selectedIndex=-1;
 
判断条件改为
if (e.ItemIndex == list.LastClickedIndex && selectedIndex != list.LastClickedIndex)
            {

                MzGraphicsAPI.DrawSelectedBackground(e.Graphics.GetHdc(), e.ItemRectangle);
                selectedIndex = list.LastClickedIndex;

            }
 
 
这个只是针对这个错误想出来的临时解决方法。不知道能不能从源头来杜绝呢??
Closed Sep 3, 2010 at 6:23 AM by wpwen

comments

wpwen wrote Jun 28, 2010 at 3:36 AM

现在的版本应该不会出现两个选项被选中的效果了

wrote Sep 3, 2010 at 6:23 AM

wrote Feb 2, 2013 at 5:48 AM

wrote May 14, 2013 at 1:24 AM