C# 选择索引上的列表框错误

C# 选择索引上的列表框错误,c#,visual-studio,C#,Visual Studio,我在winform上有一个listbox控件,它是单项目选择模式或单项目选择模式。我正在尝试从窗体向下滚动它,如下所示 if ((Keys)e.KeyCode == Keys.Down) { if (listBox2.Items.Count >= listBox2.SelectedIndex) { listBox2.SelectedIndex++; } } 但它会抛出一个错误,如“ArgumentOutOfRangeExcept

我在winform上有一个listbox控件,它是单项目选择模式或单项目选择模式。我正在尝试从窗体向下滚动它,如下所示

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

     }

 }
但它会抛出一个错误,如“ArgumentOutOfRangeException未处理” value=23的无效参数对于选择索引无效。

如何摆脱困境?

试试以下方法:

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

     }

 }
请记住,如果您有23项,
SelectedIndex
从0变为22…

请尝试以下操作:

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

     }

 }
请记住,如果您有23个项目,
SelectedIndex
从0变为22…

根据
列表框。SelectedIndex

当前所选项目的基于零的索引。负值 如果未选择任何项目,则返回一个(-1)

所以,我相信你需要改变

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

请投票给马可正确的答案,因为他向我指出了这一点

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

根据
列表框。选择索引

当前所选项目的基于零的索引。负值 如果未选择任何项目,则返回一个(-1)

所以,我相信你需要改变

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

请投票给马可正确的答案,因为他向我指出了这一点


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

listbox.SelectedIndex是一个基于零的数组,即索引中的第一个项目将是0,而items.Count将始终返回一个从1开始的值

有关更多信息,请参见以下内容:


您好,Wayne

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

有关更多信息,请参见以下内容:


亲切问候,Wayne

如果
Count=23
SelectedIndex=22
(最后一个)你的
如果(…)
是真的,你会得到同样的例外如果
Count=23
SelectedIndex=22
(最后一个)你的
如果(…)
,你会得到同样的例外