2010-04-19 101 views
1

我有固定大小的列表框4列表框更新问题

我可以添加ListBoxItems正数,一旦规模超过4我已经启用滚动条,

问题:当滚动启用(超过4项),每当我删除最后一个项目,有一个白色补丁代替删除项目。

只有当我触摸滚动条时,补丁才会熄灭。

我试过ListBox.Invalidate(),但是没有用

+2

您使用的BeginUpdate()方法的地方,并忘记调用EndUpdate()方法(或跳过它是因为例外)? – TLiebe 2010-04-19 14:05:03

+0

不,我没有使用BeginUpdate() – Gaddigesh 2010-04-19 14:16:42

回答

2

附加说明:只有在删除最后一个元素时才会发生这种情况。

解决方案:明确设置新的选择,并为最后一个元素榜上无名滚动第一:

 int selected = listBox1.SelectedIndex;   
     if (selected >= 0) 
     { 
      listBox1.Items.RemoveAt(selected); 
      if (selected == listBox1.Items.Count) 
       listBox1.SelectedIndex = 0; 

      listBox1.SelectedIndex = selected - 1; 
     } 
+0

我设置了新的选择(即使是afeter问题依然存在),我没有理解“为最后一个元素使列表首先滚动“。 你能否详细说明 – Gaddigesh 2010-04-20 07:23:28

+0

这是这样的说法:'listBox1.SelectedIndex = 0;' – 2010-04-20 07:40:56

+0

非常感谢, – Gaddigesh 2010-04-20 10:02:16

0

什么是你的“删除”代码从列表框中删除?如果您使用的是这样的:

listBox.Items[3] = null; 

...然后仍然有4个项目在列表框中,只是第四个为空。您实际上需要删除该项目:

listBox.Items.Remove(3); 
+0

我只在做listBox.Items.Remove(3),总之上面的答案解决了我的问题 – Gaddigesh 2010-04-20 10:03:20