954,518 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

What is the method for populating an array with selections from a listbox

I need to populate an array with the items a user has selected in a listbox.

Example: Listbox contains A, B, C, D, E
User selects B, D, E

create an array containing B, D, E

What method would I use to do this? I've found plenty of info for populating a listbox with the contents of an array, but not the other way around.

Thanks in advance for any help.

Cory_Brown
Newbie Poster
22 posts since Sep 2009
Reputation Points: 18
Solved Threads: 0
 

try this:

int n = listBox1.SelectedItems.Count;
            string[] array = new string[n];
            for (int i = 0; i < n; i++)
            {
                array[i] = listBox1.SelectedValue.ToString();
            }
jatin24
Junior Poster in Training
75 posts since Aug 2009
Reputation Points: 31
Solved Threads: 21
 

Try this:

// What I would do
            List<string> Strlist = new List<string>();
            foreach (string str in listBox1.SelectedItems)
            {
                Strlist.Add(str);
            }

            // Or try the corrected jatin24 style
            int n = listBox1.SelectedItems.Count; 
            string[] array = new string[n];
            for (int i = 0; i < n; i++)
            {
                array[i] = listBox1.SelectedItems[i].ToString();
            }
ddanbe
Senior Poster
3,829 posts since Oct 2008
Reputation Points: 2,070
Solved Threads: 661
 
string[] ar = listBox1.SelectedItems.Cast<string>().ToArray<string>();
__avd
Posting Genius (adatapost)
Moderator
8,648 posts since Oct 2008
Reputation Points: 2,136
Solved Threads: 1,241
 
string[] ar = listBox1.SelectedItems.Cast<string>().ToArray<string>();


That is handy! For unboxing casts I have always used the .ConvertAll() but this is much easier to call :)

What I have been doing:

double[] sArray2 = lst.ConvertAll<double>(new Converter<decimal, double>(Convert.ToDouble)).ToArray();
sknake
Industrious Poster
4,954 posts since Feb 2009
Reputation Points: 1,764
Solved Threads: 735
 
string[] ar = listBox1.SelectedItems.Cast<string>().ToArray<string>();

Wanted to +rep you, but I guess I already did somewhere and it wouldn't let me. Anyway, that is a very clean line of code I haven't seen before--kudos! I hope I remember it the next time I do that.;)

DdoubleD
Posting Shark
996 posts since Jul 2009
Reputation Points: 341
Solved Threads: 233
 

mark as solved.

serkan sendur
Postaholic
Banned
2,062 posts since Jan 2008
Reputation Points: 854
Solved Threads: 127
 

In terms of long lists and performance, Danny's solution is the best and to make it better use 'for' loop instead of 'foreach'
My test on 10000 items
Danny (for not foreach) | 39060 ticks
Danny | 48825 ticks
adatapost | 761670 ticks

Ramy Mahrous
Postaholic
2,196 posts since Aug 2006
Reputation Points: 480
Solved Threads: 276
 

Thank you all for the responses. Marked as solved.

Cory_Brown
Newbie Poster
22 posts since Sep 2009
Reputation Points: 18
Solved Threads: 0
 

This question has already been solved

Post: Markdown Syntax: Formatting Help
You