双击列表视图中的项目

本文关键字:项目 视图 列表 双击 | 更新日期: 2023-09-27 18:08:18

所以我添加了一个列表视图,并且我在每个列表中显示3列字符串。我也有完整的行选择。我想能够双击其中一行,并有它返回在第三列的字符串。我试着到处寻找解决这个问题的方法,但到目前为止什么也没找到。

目前为止我的代码是:

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

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

双击列表视图中的项目

你可以试试:

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

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

我认为你不应该绑定你的listView到双击事件,但listViewItem。sender将有DataContext,从中你可以得到你的第三列。

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

在这一行设置断点:

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

当调试器到达断点时,您可以选择songList并按Shift-F9。
现在您可以探索songList并检查如何获得第三列的字符串。

SelectedItems返回一个SelectedListViewItemCollection,并使用索引器访问该集合中的元素,即ListViewItems,而不是列。这意味着,如果选择了单行,则集合只包含一个项目,如果试图访问第三行,则会出现错误。

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

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