views:

52

answers:

3

Hello. How can I resize the height of a ListView depending on how many items are in that ListView? I'm trying to get the text of an item which is clicked, however whenever the user clicks on a space which has no item, there's an error. The exact error is:

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

I'm using the code:

label14.Text = myListView1.SelectedItems[0].Text.ToString();

I figured that removing the space below the items will solve this problem. Thanks!

+3  A: 

What you should do to fix your error is check to see whether the user actually clicked on an item:

if (myListView1.SelectedItems.Count > 0) {
    label14.Text = myListView1.SelectedItems[0].Text.ToString();
}
Lucas Jones
It doesn't seem to be working. It says I'm missing a assembly reference. Thanks.
Joey Morani
Oops. `Count` is the correct property - the compiler was looking for an extension method with that name, or similar, IIRC. :)
Lucas Jones
A: 

The height of each item is what, around 5-7 pixels depending on the font/font size used. So you can simply do myListView1.Height = myListView1.Items.Count * itemHeight;

To remove empty list items you can iterate through and remove them.

Dremation
A: 

Aha. I've got it working. I used:

if (myListView1.SelectedItems.Count > 0)
        {
            label14.Text = myListView1.SelectedItems[0].Text.ToString();
        }

That seemed to do the trick. Thanks again for the help!

Joey Morani
Please close your thread by marking Lucas' post as the correct answer.
Hans Passant