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.

try this:

int n = listBox1.SelectedItems.Count;
            string[] array = new string[n];
            for (int i = 0; i < n; i++)
            {
                array[i] = listBox1.SelectedValue.ToString();
            }

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();
            }
Comments
Great man
very observant
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();
Comments
ThreadSafe++
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.;)

Comments
Thanks!

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

Comments
Nice you did this test!
Test++
This question has already been answered. Start a new discussion instead.