【问题标题】:C# programmatically change selected item in listviewC# 以编程方式更改列表视图中的选定项
【发布时间】:2012-07-26 21:54:29
【问题描述】:

更新!

澄清问题。我想使用向上和向下箭头更改列表视图中的选定项目。我已将 keydown 绑定到一个文本框。如果用户按下句点键,我会使我的列表视图可见。但它没有重点,这就是为什么我将 keydown 事件绑定到文本框以便能够更改列表视图中的选定项。

visuaö studio 抱怨的代码是这样的

index = listView1.SelectedIndices[0];

0 是不是有点不对?

我正在使用 列表视图

如何以编程方式更改列表视图selecteditem?我目前正在监听向上箭头和向下箭头的按键事件。

当他们被按下时,我想更改所选项目的索引。这样它的行为就与按下向上或向下箭头使其聚焦时一样!

我一直在尝试,但它给了我一个丑陋的错误信息。

参数超出范围异常,附加信息如下:

0 值对索引无效。这是我的向下箭头代码。

它真的应该工作我对此一无所知!

if (e.KeyCode == Keys.Down)
{
    if (listView1.Visible)
    {
        index = listView1.SelectedIndices[0];  
        index = index - 1;
        this.listView1.Items[index].Selected = true;
    }
}

向上箭头

if (e.KeyCode == Keys.Up)
{
    if (this.listView1.Visible)
    {
        index = listView1.SelectedIndices[0];
        index++;
        this.listView1.Items[index].Selected = true;
    }
}

【问题讨论】:

  • 欢迎来到 Stack Overflow。以后,请提供您收到的确切错误或异常,包括尽可能详细的信息。解释错误消息对我们没有任何好处。
  • 你从哪里得到异常?向上键还是向下键?对我来说,您似乎在列表中没有任何项目,因此当您访问项目 0 时索引超出范围。
  • 我不明白这个问题。当您使用键盘时,确定焦点的项目是唯一选择的项目吗?

标签: c# listview


【解决方案1】:

试试这个:

if (e.KeyCode == Keys.Down)
{
    if (listView1.Visible && listView1.Items.Count > 0)
    {
        index = listView1.SelectedIndices[0];  
        index = index - 1;
        this.listView1.Items[index].Selected = true;
    }
}

我认为您收到了IndexOutOfBound,因为您在列表中没有任何项目。

【讨论】:

    猜你喜欢
    • 2014-05-28
    • 2019-09-04
    • 2013-03-30
    • 2010-11-05
    • 1970-01-01
    • 2019-03-12
    • 1970-01-01
    • 2018-11-20
    • 2011-06-12
    相关资源
    最近更新 更多