PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Listenfeld ausschneiden und einfügen



Belphegore
02.12.2011, 22:53
Moin Moin Free-Hack,

Also ich habe in Visual Basic 2 Listboxen und 2 Buttons. Mit dem einen Button, löscht es den ausgewählten Eintrag von LB1 und fügt ihn in LB2 ein, der andere genau das Gegenteil.

Momentan sieht das so aus:

http://www8.pic-upload.de/02.12.11/5tpxdcijvqdj.png

Mit meinem Code löscht es jedoch die Einträge nur und fügt sie nicht beim anderen ein. Hab lange rumgetüfftelt, aber es irgendwie nicht geschafft, dass es diesen dann auch noch einfügt. Irgendwas mit der Funktion "Insert()" ?

Der Code der sieht momentan so aus:

Public Class Form1

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
ListBox1.Items.Add("Spaghetti")
ListBox1.Items.Add("Grüne Nudeln")
ListBox1.Items.Add("Tortellini")
ListBox1.Items.Add("Pizza")
ListBox1.Items.Add("Lasagne")

ListBox2.Items.Add("Coca Cola")
ListBox2.Items.Add("Eistee")
ListBox2.Items.Add("Pepsi")
ListBox2.Items.Add("Sprite")
ListBox2.Items.Add("Red Bull")

End Sub

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click

Dim X As Integer
X = ListBox2.SelectedIndex
If X <> -1 Then
ListBox2.Items.RemoveAt(X)
End If

End Sub

Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click

Dim X As Integer
X = ListBox1.SelectedIndex
If X <> -1 Then
ListBox1.Items.RemoveAt(X)
End If

End Sub
End Class

Wie müsste man den genau ergänzen? :confused: Wäre echt hilfreich :)

xed
03.12.2011, 00:24
Kann keine konkrete Hilfe geben, da ich mich mit Visual Basic jetzt nicht so direkt auskenne. Aber momentan scheinst du ja nur den Eintrag zu löschen, der an Stelle X makiert wurde?!

Versuch mal in die (in diesem Beispiel von Button1_Click) if-Verzweigung etwas wie
ListBox1.Items.Add(ListBox2.Items.Item(X).ToString )
hinzuzufügen... natürlich bevor du es löscht.

Death~
03.12.2011, 13:30
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim selected As String = ListBox1.SelectedItem
If selected <> "" Then
ListBox1.Items.Remove(ListBox1.SelectedItem)
ListBox2.Items.Add(selected)
End If

Dim selected2 As String = ListBox2.SelectedItem
If selected2 <> "" Then
ListBox2.Items.Remove(ListBox2.SelectedItem)
ListBox1.Items.Add(selected2)
End If
End Sub

Sollte worken ;)

Belphegore
03.12.2011, 15:39
Sollte worken ;)

Perfekt, danke! :)

Weisst du wie man den Code umschreiben müsste, das wenn man mehrere markiert, dann auch mehrere rübergeschoben werden .. ? Hab das schon eingestellt, dass man mehrere auswählen kann :)

Death~
03.12.2011, 17:17
Probier mal das:


Dim selectedMulti = ListBox1.SelectedItems
If selectedMulti.Count > 0 Then
Dim strlist As New ArrayList
For Each eintrag In selectedMulti
strlist.Add(eintrag)
Next
For Each selection In strlist
ListBox1.Items.Remove(selection)
ListBox2.Items.Add(selection)
Next
End If

Dim selectedMulti2 = ListBox2.SelectedItems
If selectedMulti2.Count > 0 Then
Dim strlist2 As New ArrayList
For Each eintrag In selectedMulti2
strlist2.Add(eintrag)
Next
For Each selection In strlist2
ListBox2.Items.Remove(selection)
ListBox1.Items.Add(selection)
Next
End If

Bangerdoshish
07.12.2011, 14:53
Sehr schön gemacht, sogar mit gleichzeitigem auswechseln ;)
+ braucht es nur noch ein Button

~ L.L.

Death~
07.12.2011, 15:45
+ braucht es nur noch ein Button


Was meinst du damit?
MfG

Bangerdoshish
08.12.2011, 07:11
Dass es nur noch ein Button braucht statt zwei.
Belphegore hatte Ursprünglich zwei Buttons implementiert,
einen um von links nach rechts zu verschieben und einen um von rechts nach links.

Death~
08.12.2011, 08:48
Ja und wo ist das Problem? Einfach zwei ButtonSubs erstellen und den jeweiligen Code dort einfügen.

Bangerdoshish
08.12.2011, 09:37
Lies einfach nochmal die Posts durch.

Death~
08.12.2011, 09:52
Lies einfach nochmal die Posts durch.



Also ich habe in Visual Basic 2 Listboxen und 2 Buttons. Mit dem einen Button, löscht es den ausgewählten Eintrag von LB1 und fügt ihn in LB2 ein, der andere genau das Gegenteil.


Also du packst diesen Teil:


Dim selectedMulti = ListBox1.SelectedItems
If selectedMulti.Count > 0 Then
Dim strlist As New ArrayList
For Each eintrag In selectedMulti
strlist.Add(eintrag)
Next
For Each selection In strlist
ListBox1.Items.Remove(selection)
ListBox2.Items.Add(selection)
Next
End Ifin die Sub des ersten Buttons. Dann diesen Teil:


Dim selectedMulti2 = ListBox2.SelectedItems
If selectedMulti2.Count > 0 Then
Dim strlist2 As New ArrayList
For Each eintrag In selectedMulti2
strlist2.Add(eintrag)
Next
For Each selection In strlist2
ListBox2.Items.Remove(selection)
ListBox1.Items.Add(selection)
Next
End Ifin die Sub des zweiten Buttons.

Nichts anderes habe ich oben gesagt.

BeTA23
08.12.2011, 12:11
+ braucht es nur noch ein Button


Death, ich denke das er dich nicht Kritisieren wollte. Er fand wohl einfach die Tatsache gut, dass Theoretisch nur noch ein Button benötigt wird.