双击列表视图中的项目
本文关键字:项目 视图 列表 双击 | 更新日期: 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