how to get count of items in listbox?

  • Thread starter Thread starter Guest
  • Start date Start date
G

Guest

Hi, How can I set all the items in a listbox to be selected? I can't find a
property or mehtod to do it so I thought I'll try using setselected method
but I need to find out how many items are in the listbox.

Thanks,
Alpha
 
Something similar to the following code should do it.

for (int x = 0; x < this.listBox1.Items.Count; x++)
{
this.listBox1.SetSelected(x, true);
}
 
The method above is good for a small number of items in the listbox, but if
you have many. (100,000) it is either too slow or doesn't work. Is there
any other way to accomplish the same thing, but may be faster.

TIA,

Fritz
 
Try the following code.

this.listBox1.SelectionMode = SelectionMode.MultiExtended;

....

if (this.listBox1.Items.Count > 0)
{
this.listBox1.Focus();
this.listBox1.SetSelected(0, true);
SendKeys.Send("+{END}");
}
 
Here is an solution, that we had implemented (sorry, it might sound stupid :-))
To the list box we added an item as follows
[ALL] <-- Represents user wants to select all item(s)
item1
item2....

Based on the selection, we did the apprpriate thing wthin the code

Thanks
PP
 
Hi Tim

I tried this code, but doesn't seem to work. It does not SELECT all item(s),
it selects only the first item.

private void Form1_Load(object sender, System.EventArgs e)
{
listBox1.Items.Add ("Item-1") ;
listBox1.Items.Add ("Item-2") ;
listBox1.Items.Add ("Item-3") ;
listBox1.Items.Add ("Item-4") ;
listBox1.Items.Add ("Item-5") ;

this.listBox1.SelectionMode = SelectionMode.MultiExtended;
if (this.listBox1.Items.Count > 0)
{
this.listBox1.Focus();
this.listBox1.SetSelected(0, true);
SendKeys.Send("+{END}");
}
}
 
It has to do with setting focus and selections in the Load event, before the
Form is visible. To get around this, explicitly show the Form.

private void Form1_Load(object sender, System.EventArgs e)
{
// Do preparation work here.

for (int x = 0; x < 100; x++)
{
this.listBox1.Items.Add("Item" + x.ToString());
}

this.listBox1.SelectionMode = SelectionMode.MultiExtended;

this.Show();

// Do focused work here.

if (this.listBox1.Items.Count > 0)
{
this.listBox1.Focus();
this.listBox1.SetSelected(0, true);
SendKeys.Send("+{END}");
}
}

Alternatively, you could use the Activated event instead of Load. Just note
that the Activated event may fire multile times during the life span of the
Form, depending on what the user does. For example, if the Form loses focus
to another Form, the Activated event will fire again when the Form is
brought back to the foreground. So you would need to handle this by using a
flag that indicates the work you did in the Activated event at startup has
already been done and does not need to be done again.
 
Sweet. That did the trick.

Tim Wilson said:
It has to do with setting focus and selections in the Load event, before the
Form is visible. To get around this, explicitly show the Form.

private void Form1_Load(object sender, System.EventArgs e)
{
// Do preparation work here.

for (int x = 0; x < 100; x++)
{
this.listBox1.Items.Add("Item" + x.ToString());
}

this.listBox1.SelectionMode = SelectionMode.MultiExtended;

this.Show();

// Do focused work here.

if (this.listBox1.Items.Count > 0)
{
this.listBox1.Focus();
this.listBox1.SetSelected(0, true);
SendKeys.Send("+{END}");
}
}

Alternatively, you could use the Activated event instead of Load. Just note
that the Activated event may fire multile times during the life span of the
Form, depending on what the user does. For example, if the Form loses focus
to another Form, the Activated event will fire again when the Form is
brought back to the foreground. So you would need to handle this by using a
flag that indicates the work you did in the Activated event at startup has
already been done and does not need to be done again.
 
Back
Top