开发者

listview to string exception thrown

开发者 https://www.devze.com 2023-01-27 10:59 出处:网络
What I have going on is i am using string proj = listView2.SelectedItems[0].ToString(); to capture the item of my selected listview item, this works fine the first around, when i click on another l

What I have going on is i am using

string proj = listView2.SelectedItems[0].ToString();

to capture the item of my selected listview item, this works fine the first around, when i click on another listview item it throw the exception of

InvalidArgument=Value of '0' is not valid for 'index'. Parameter name: index

Any thoughts?

    private voi开发者_StackOverflow中文版d listView2_SelectedIndexChanged(object sender, EventArgs e)
    {
       string proj = listView2.SelectedItems[0].ToString();
    }

working:

        string proj ="";
        ListView.SelectedListViewItemCollection lv2si =
        this.listView2.SelectedItems;

        foreach (ListViewItem item in lv2si)
        {
            proj = item.ToString();
        }


What if no item is selected in listview ? The collection will contain zero items and it will throw this exception.

Instead, obtain ListViewItemCollection and use foreach to iterate over it. As described in MSDN example: ListView.SelectedListViewItemCollection breakfast = this.ListView1.SelectedItems;

    double price = 0.0;
    foreach ( ListViewItem item in breakfast )
    {
        price += Double.Parse(item.SubItems[1].Text);
    }

http://msdn.microsoft.com/en-us/library/system.windows.forms.listview.selecteditems.aspx


You should test that the index value is valid before you access it.

private void listView2_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    string proj;
    if (listView2.SelectedItems.Count > 0)
        proj = listView2.SelectedItems[0].ToString(); 
    else
        proj = string.Empty;
} 


The SelectedIndexChanged event is raised whenever the Selected property of a ListViewItem changes. This means the event is raised twice: once when the first item is deselected, and a second time when the item you clicked on is selected. Since you are not checking whether SelectedItems has any items, you get the exception the first time the event is raised.

As @Jeffrey L Whitledge shows in his answer, you can use SelectedItems.Count to determine whether any items are selected.

0

精彩评论

暂无评论...
验证码 换一张
取 消