2012-11-12 3 views
8

Ich versuche, ausgewählte Elemente in Listbox1 in Listbox2 zu verschieben, und umgekehrt. Ich habe zwei Tasten, >> und <<. Wenn ich Elemente in listbox1 auswähle und dann auf >> klicke, sollten die Elemente von listbox1 nach listbox2 verschoben werden.Verschieben ausgewählter Elemente aus einer Listbox in eine andere in C# winform

private void MoveListBoxItems(ListBox source, ListBox destination) 
{ 
    ListBox.SelectedObjectCollection sourceItems = source.SelectedItems; 
    foreach (var item in sourceItems) 
    { 
     destination.Items.Add(item); 
    } 
    while (source.SelectedItems.Count > 0) 
    { 
     source.Items.Remove(source.SelectedItems[0]); 
    } 
} 

private void button2_Click_1(object sender, EventArgs e) 
{ 
    MoveListBoxItems(listbox , lstActivity); 
} 
+0

ok ... Ich habe meinen Code – user1770370

+0

was ist das Problem? –

+0

Ihr Code ist wahr. –

Antwort

10

gehen können Ihr Code funktioniert gut. Ich habe es getestet. Ihre Frage ist "Ich versuche, ausgewählten Element in der Listbox1 zu verschieben, um Box2 aufzulisten."

Ich denke, Ihre button2 problem.delete button2 und den Code unten

private void button2_Click_1(object sender, EventArgs e) 
{ 
    MoveListBoxItems(listbox , lstActivity); 
} 

dann andere Schaltfläche erstellen und Click-Ereignis erstellen hat.

volle Quelle:

private void MoveListBoxItems(ListBox source, ListBox destination) 
{ 
    ListBox.SelectedObjectCollection sourceItems = source.SelectedItems; 
    foreach (var item in sourceItems) 
    { 
     destination.Items.Add(item); 
    } 
    while (source.SelectedItems.Count > 0) 
    { 
     source.Items.Remove(source.SelectedItems[0]); 
    } 
} 

private void first2second_Click(object sender, EventArgs e) 
{ 
    MoveListBoxItems(FirstListbox, LastListbox); 
} 

private void second2first_Click(object sender, EventArgs e) 
{ 
    MoveListBoxItems(LastListbox, FirstListbox); 
} 

dieser Code ist Arbeit. Wenn Sie mehr als einen Artikel auswählen möchten, ändern Sie die Eigenschaft SelectionMode = MultiSimple;

+0

gibt es einen Fehler: Zusätzliche Informationen: Operation ist nicht gültig, während ItemsSource verwendet wird. Greifen Sie stattdessen auf Elemente mit ItemsControl.ItemsSource zu und ändern Sie sie. –

2
private void buttonMoveToListBox1_Click(object sender, EventArgs e) 
{ 
    if(listBox1.SelectedIndex != -1) 
    { 
     listBox2.Items.Add(listBox1.SelectedValue); 
     listBox1.Items.Remove(listBox1.SelectedValue); 
    } 
} 

private void buttonMoveToListBox2_Click(object sender, EventArgs e) 
{ 
    if(listBox2.SelectedIndex != -1) 
    { 
     listBox1.Items.Add(listBox2.SelectedValue); 
     listBox2.Items.Remove(listBox2.SelectedValue); 
    } 
} 
+0

ListBox enthält keine Verteidigung für Add! – user1770370

+0

listbox.Items.Add es war nur ein Tippfehler – nawfal

+0

Geben Exception !!! :("Wert kann nicht null sein" in Zeile, die schrieb: listbox.items.add (listbox.selectValue); – user1770370

0

Es wird Konflikte für jede gelöschte Zeile sein, so gehen sie mit dem folgenden Code:

>>

 for (int intCount = ListBox1.SelectedItems.Count - 1; intCount >= 0; intCount--) 
    { 
     ListBox2.Items.Add(ListBox1.SelectedItems[intCount]); 
     ListBox1.Items.Remove(ListBox1.SelectedItems[intCount]); 
    } 

< <

Wenn die oben ein nicht funktioniert, dann versuchen, diese:

while (ListBox1.SelectedItems.Count > 0) 
{ 
    ListBox2.Items.Add(ListBox1.SelectedItems[0].Text); 
    ListBox1.SelectedItems[0].Remove(); 
} 

Für weitere Art von Antworten, die Sie mit diesem link

+0

Iterate von oben nach unten besser. . – nawfal

+0

@nawfal Eigentlich mag ich das besser, weil es etwas Verständnis (zu mir atleast) irgendwie gibt, das ich zur Verfügung stellte, enthält die Weise, die Sie erklärten :) –

+0

geben Sie Ausnahme in ListBox.Item.Remove !!! es ist: "Index war außerhalb der Grenzen des Arrays – user1770370

-2
<script type="text/javascript"> 
     $(document).ready(function() { 
      // > arrow 
      $('#SingleRightMove').click(function() {      
        $('#fromBox option:selected').remove().appendTo('#toBox'); 
        //$("#tobox option").attr("selected", false);   
        $('#toBox').find("option").attr("selected", false); 

      }); 
      // < arrow 
      $('#SingleLeftMove').click(function() { 
       $('#toBox option:selected').remove().appendTo('#fromBox'); 
       $("#fromBox option").attr("selected", false); 
      }); 
      // >> arrow 
      $('#AllRightMove').click(function() {    
       $('#fromBox option').remove().appendTo('#toBox'); 
       $("#toBox option").attr("selected", false); 
      }); 
      // << arrow 
      $('#AllLeftMove').click(function() {   
       $('#toBox option').remove().appendTo('#fromBox'); 
       $("#fromBox option").attr("selected", false); 
      }); 




     }); 



    </script> 
+1

Ummm ... das ist definitiv keine Antwort auf die Frage, die hier gestellt wurde. Die Frage bezieht sich auf C#/Winforms. –

-2

Holen Sie sich die >> und < < Tasten erstellt mit 2 Listenfeldern wie ListBox2 und 3 unten ... ur Elemente in Listenfeld 2 zuerst wie von etwas bekommen get-Inhalt oder get-ADComputer etc ..

$buttonMOVERight_Click={ 
    foreach ($Srv in $listbox2.selectedItems) 
     {$selectedServers=$Srv} 
    $listbox3.BeginUpdate() 
    foreach($TSrv in $Srv) 
     {$listbox3.Items.Add($TSrv); 
     $listbox2.Items.Remove($TSrv);}       
    $listbox3.EndUpdate() 
} 

$buttonMoveLeft_Click={ 
     #TODO: Place custom script here 
     foreach ($Srvs in $listbox3.selectedItems) 
     {$ServersinRt=$Srvs} 
    $listbox2.BeginUpdate() 
    foreach($rSRv in $Srvs) 
     {$listbox2.Items.Add($rSRv); 
     $listbox3.Items.Remove($Srvs);} 
     $listbox2.EndUpdate() 
} 
+1

Diese Antwort ist nicht für Winforms. – Chris

Verwandte Themen