选择索引上的列表框错误

时间:2012-05-13 19:12:34

标签: c# visual-studio

我在winform上有一个列表框控件,同样是单项SelectionMode或一项选择模式。我正在尝试从 form_KeyDown 事件中滚动它,如下所示

if ((Keys)e.KeyCode == Keys.Down)
{
     if (listBox2.Items.Count >= listBox2.SelectedIndex) 
     {
           listBox2.SelectedIndex++;

     }

 }

但是它会抛出像“ArgumentOutOfRangeException未处理”的错误 无效的参数值= 23对选择索引无效。

如何摆脱?

3 个答案:

答案 0 :(得分:2)

试试这个:

if ((Keys)e.KeyCode == Keys.Down)
{
     if ((listBox2.Items.Count-1) > listBox2.SelectedIndex) 
     {
           listBox2.SelectedIndex++;

     }

 }

请记住,如果您有23个项目,SelectedIndex从0到22 ......

答案 1 :(得分:1)

根据ListBox.SelectedIndex上的MSDN's documentation

  

当前所选项目的从零开始索引。值为负数   如果没有选择任何项目,则返回一(-1)。

所以,我相信你需要改变

if (listBox2.Items.Count >= listBox2.SelectedIndex)

if (listBox2.Items.Count-1 > listBox2.SelectedIndex)

请将Marco的回答投票给他,因为他向我指出了这一点!

因为如果列表框中有23个项目,则项目23实际上是项目22,项目1实际上是项目0等等。

答案 2 :(得分:1)

ListBox.SelectedIndex是一个基于零的数组IE,第一个项目在索引中为0,而Items.Count将始终返回从1开始的值。

请参阅以下内容以获取更多信息: http://msdn.microsoft.com/en-us/library/system.windows.forms.listbox.selectedindex.aspx

亲切的问候,韦恩

相关问题