获取单个listView SelectedItem

top*_*eel 12 c# listviewitem winforms

MultiSelect将listView 的属性设置为false,我正在尝试获取单个listViewItem.但可用的财产是SelectedItems.我一直在使用以下代码......

foreach (ListViewItem item in listView1.SelectedItems)
{
    //do something with item.text or whatever
}
Run Code Online (Sandbox Code Playgroud)

因为我知道只会选择一个项目.这样做的正确方法是什么?

Vog*_*612 25

通常SelectedItems返回一个集合,一个数组或一个IQueryable.

无论哪种方式,您都可以通过索引访问项目与数组:

String text = listView1.SelectedItems[0].Text; 
Run Code Online (Sandbox Code Playgroud)

顺便说一句,您可以随时将要查看的项目保存到a中,SelectedItems并在设置断点后在Locals中检查其结构.

  • 不要忘记检查listView1.SelectedItems.Count以防止空指针异常 (2认同)

gza*_*axx 11

我这样做:

if (listView1.SelectedItems.Count > 0)
{
     var item = listView1.SelectedItems[0];
     //rest of your logic
}
Run Code Online (Sandbox Code Playgroud)


Ped*_*iro 6

有时仅使用下面的行会引发异常,

String text = listView1.SelectedItems[0].Text; 
Run Code Online (Sandbox Code Playgroud)

所以我使用下面的代码:

private void listView1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    if (listView1.SelectedIndices.Count <= 0) 
    { 
        return; 
    } 
    int intselectedindex = listView1.SelectedIndices[0]; 
    if (intselectedindex >= 0) 
    {
        String text = listView1.Items[intselectedindex].Text;

        //do something
        //MessageBox.Show(listView1.Items[intselectedindex].Text); 
    } 
}
Run Code Online (Sandbox Code Playgroud)