选择索引上的列表框错误

本文关键字:错误 列表 索引 选择 | 更新日期: 2023-09-27 18:33:58

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

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

但它会抛出一个错误,例如"ArgumentOutOfRangeException 未处理"值 =23 的无效参数对选择索引无效。

如何下车?

选择索引上的列表框错误

试试这个:

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

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

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

有关详细信息,请参阅以下内容:http://msdn.microsoft.com/en-us/library/system.windows.forms.listbox.selectedindex.aspx

亲切的问候,韦恩

根据 MSDN 关于ListBox.SelectedIndex的文档:

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

所以,我相信你需要改变

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

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

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

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