所以我添加了一个列表视图,我在每个列表中显示3列字符串。我也有完整的行选择。我希望能够双击其中一行,并让它返回第3列中的字符串。我试图到处寻找解决方案,但到目前为止没有任何问题出现。
到目前为止我的代码是:
private void listView_MouseDoubleClick(object sender, MouseEventArgs e)
{
MessageBox.Show(songList.SelectedItems[2].ToString());
}
然而它返回一个错误,说“InvalidArgument ='2'的值对'index'无效。 参数名称:索引“
答案 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
并检查自己如何获取第三列的字符串。