在ListView中双击项目

时间:2011-09-09 06:03:26

标签: c# double-click

所以我添加了一个列表视图,我在每个列表中显示3列字符串。我也有完整的行选择。我希望能够双击其中一行,并让它返回第3列中的字符串。我试图到处寻找解决方案,但到目前为止没有任何问题出现。

到目前为止我的代码是:

private void listView_MouseDoubleClick(object sender, MouseEventArgs e)
{
    MessageBox.Show(songList.SelectedItems[2].ToString());
}

然而它返回一个错误,说“InvalidArgument ='2'的值对'index'无效。 参数名称:索引“

4 个答案:

答案 0 :(得分:6)

你可以尝试:

if (songList.SelectedItems.Count > 0) 
{
    ListViewItem item = songList.SelectedItems[0];
    string s_you_want = item.SubItems[1].Text;
}

选择ListViewItem,您可以使用SubItems[]属性获取列值

答案 1 :(得分:0)

SelectedItems返回一个SelectedListViewItemCollection,并使用索引器访问此集合中的元素,即ListViewItems,而不是列。这意味着如果您选择了一行,则该集合仅包含一个项目,并且尝试访问第三个项目会给您带来错误。

尝试(根据Marco的评论编辑):

songList.SelectedItems[0].SubItems[1].Text

答案 2 :(得分:0)

我认为你不应该将listView绑定到doubleClick事件,而是listViewItem。发件人将拥有DataContext,您可以从中获得第三列。

答案 3 :(得分:0)

如何填写ListView?如果不知道这一点,很难提供帮助。也许你可以试试这个:

在此行中设置断点:

MessageBox.Show(songList.SelectedItems[2].ToString());  

只要调试器遇到断点,您就可以选择songList并点击Shift-F9。
现在,您可以浏览songList并检查自己如何获取第三列的字符串。