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.

Recommended Answers

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] …
Jump to Post
string[] ar = listBox1.SelectedItems.Cast<string>().ToArray<string>();
Jump to Post

All 8 Replies

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();
            }
commented: very observant +2
commented: chic +8
commented: Great man +15
string[] ar = listBox1.SelectedItems.Cast<string>().ToArray<string>();
commented: Nice contribution! +12
commented: neat +14
commented: chic +8
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();
commented: chic +8
commented: ThreadSafe++ +15
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.;)

commented: chic +8
commented: Thanks! +15

mark as solved.

commented: correct. +15

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

commented: Test++ +15
commented: Nice you did this test! +13

Thank you all for the responses. Marked as solved.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts learning and sharing knowledge.