2012-11-12 14 views
8

Sto provando a spostare gli elementi selezionati nella casella di riepilogo1 alla casella di riepilogo2 e viceversa. Ho due pulsanti, >> e <<. Quando seleziono elementi in listbox1 e poi clicco su >> gli oggetti dovrebbero passare da listbox1 a listbox2.Sposta gli elementi selezionati da una casella di riepilogo a un'altra in C# winm

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 ... Ho inserito il mio codice – user1770370

+0

qual è il problema? –

+0

il tuo codice è vero. –

risposta

10

il codice funziona bene. l'ho provato la tua domanda è "Provo a spostare selezionato elemento nella casella di elenco1 per elencare la casella2."

Credo che la vostra button2 ha pulsante2 problem.delete e il codice qui sotto

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

quindi creare un altro pulsante e creare evento click.

sorgente completo:

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); 
} 

questo codice è il lavoro. se si desidera selezionare più di un elemento, modificare la proprietà SelectionMode = MultiSimple;

+0

c'è un errore: Ulteriori informazioni: Operazione non è valido mentre ItemsSource è in uso.Accesso e modifica elementi con ItemsControl.ItemsSource invece –

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 non contiene la defenizione per Aggiungi! – user1770370

+0

listbox.Items.Add era solo un errore di battitura – nawfal

+0

Dare un'eccezione !!! :("Il valore non può essere nullo" nella riga che ha scritto: listbox.items.add (listbox.selectValue); – user1770370

0

Ci saranno conflitti per ogni riga eliminata, in modo da andare con il codice qui sotto:

>>

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

< <

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

Se quanto sopra uno non funziona, allora provate questo:

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

Per ulteriori tipo di risposte si può andare con questo link

+0

iterare dall'alto verso il basso meglio. . – nawfal

+0

@nawfal In realtà mi piace di più perché dà una certa comprensione (almeno per me) comunque le cose che ho fornito contengono il modo in cui hai spiegato :) –

+0

dare l'eccezione in ListBox.Item.Remove !!! è: "L'indice era al di fuori limiti dell'array. – 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 ... questa non è sicuramente una risposta alla domanda che è stata posta qui La domanda riguarda C#/Winforms –

-2

Prendi il >> e < < pulsanti creati con 2 caselle di riepilogo come ListBox2 e 3 di seguito ... Get Ur elementi nella casella di riepilogo 2 prima da qualcosa come get-contenuto o get-adcomputer ecc ..

$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

Questa risposta non è per Winforms. – Chris

Problemi correlati