Copy Listview to Listview

  • Thread starter Thread starter CaffeineRush
  • Start date Start date
C

CaffeineRush

I have two Listview controls on the stage:
lv_Files
lv_SelectedFiles

I have a function that copies the selected items from lv_Files to
lv_SelectedFiles.
I am currently using a loop on the selected indices to copy. This is quite a
slow process when there are a lot of entries selected in lv_Files.

There is also a Copy All button that first selects all indices, then loops
through lv_Files, individually copying to lv_SelectedFiles.

Is there a method to perform this copy without the loop? Some faster
implementation? I have not been able to find any documention or code
examples for such.
 
Hi there... try this

object[] dest = new object[listBox1.Items.Count];
listBox1.Items.CopyTo(dest, 0);
listBox2.Items.AddRange(dest);

Regards,
 
I got the following to compile:

ListViewItem[] dest = new ListViewItem[lv_Files.Items.Count];
// object[] dest = new object[lv_Files.Items.Count];
lv_Files.Items.CopyTo(dest, 0);
lv_SelectedFiles.Items.AddRange(dest);

but get the following System.ArgumentException error in system.windows.forms.dll:

Additional information: Cannot add or insert the item 'filename.jpg' in more than one place. You must first remove it from its current location or clone it.

Any ideas? Thanks!

Angel J. Hernández said:
Hi there... try this

object[] dest = new object[listBox1.Items.Count];
listBox1.Items.CopyTo(dest, 0);
listBox2.Items.AddRange(dest);

Regards,


--
Angel J. Hernández M.
MCSD



CaffeineRush said:
I have two Listview controls on the stage:
lv_Files
lv_SelectedFiles

I have a function that copies the selected items from lv_Files to
lv_SelectedFiles.
I am currently using a loop on the selected indices to copy. This is quite a
slow process when there are a lot of entries selected in lv_Files.

There is also a Copy All button that first selects all indices, then loops
through lv_Files, individually copying to lv_SelectedFiles.

Is there a method to perform this copy without the loop? Some faster
implementation? I have not been able to find any documention or code
examples for such.
 
Hi,

I believe that "listBox2.Items.AddRange(...)" is key for
your performance goal.

And i think that loop (with "Clone()" of items) over your
"listBox1.SelectedItems" should be solution.

Cheers!

Marcin
I got the following to compile:

ListViewItem[] dest = new ListViewItem[lv_Files.Items.Count];
// object[] dest = new object[lv_Files.Items.Count];
lv_Files.Items.CopyTo(dest, 0);
lv_SelectedFiles.Items.AddRange(dest);

but get the following System.ArgumentException error in
system.windows.forms.dll:

Additional information: Cannot add or insert the item 'filename.jpg' in
more than one place. You must first remove it from its current location
or clone it.

Any ideas? Thanks!

"Angel J. Hernández" <[email protected]
Hi there... try this

object[] dest = new object[listBox1.Items.Count];
listBox1.Items.CopyTo(dest, 0);
listBox2.Items.AddRange(dest);

Regards,


--
Angel J. Hernández M.
MCSD



"CaffeineRush" <[email protected] <mailto:[email protected]>> escribió en el mensaje
I have two Listview controls on the stage:
lv_Files
lv_SelectedFiles

I have a function that copies the selected items from lv_Files to
lv_SelectedFiles.
I am currently using a loop on the selected indices to copy. This
is quite
a
slow process when there are a lot of entries selected in lv_Files.

There is also a Copy All button that first selects all indices, then loops
through lv_Files, individually copying to lv_SelectedFiles.

Is there a method to perform this copy without the loop? Some faster
implementation? I have not been able to find any documention or code
examples for such.
 
Back
Top