WinFuture-Forum.de: [VB.NET] Zwei Forms, Backgroundworker und ListBox - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

[VB.NET] Zwei Forms, Backgroundworker und ListBox


#1 Mitglied ist offline   Triale 

  • Gruppe: aktive Mitglieder
  • Beiträge: 132
  • Beigetreten: 13. September 05
  • Reputation: 0

geschrieben 08. September 2011 - 20:17

Hallo,

ich habe folgendes Problem:

Ich habe noch nicht viel Erfahrungen mit VB.Net und habe gerade in Visual Studio 2 Forms erstellt.
Die 1. Form besteht aus einem "Start" und "Stop"-Button und einem Backgroundworker.
Mit diesem Backgroundworker der 1. Form will ich Text in die ListBox der 2. Form einfügen. Das "Adden" des Textes soll in der DoWork-Methode des Backgroundworkers geschehen.
Mein Gedanke war, den Text per Delegate vom Backgroundworker der Form1 an eine addItem der Form2 zu übergeben, welche diesen Text dann in die ListBox einfügen soll. Die Box bleibt allerdings leer.

Versuche ich das gleiche mit der Ausgabe des Textes in eine Listbox der Form1, funktioniert das problemlos.

Hier mal der Code meines kleinen Testprogramms:


Klasse Form1:
Public Class Form1


    Private Sub ZeigeF2()

        Form2.Show()

    End Sub

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

        ZeigeF2()

        If Not BackgroundWorker1.IsBusy Then

            BackgroundWorker1.RunWorkerAsync()

        End If

    End Sub

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

        BackgroundWorker1.CancelAsync()

    End Sub

    Private Sub BackgroundWorker1_DoWork_1(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork

        While (True)

            If Form2.ListBox1.InvokeRequired Then

                Form2.ListBox1.Invoke(New Form2.AddItemsToListBoxDelegate(AddressOf Form2.additem), New  Object() {"Ich bin Form 2"})

            End If

            If BackgroundWorker1.CancellationPending Then

                Exit Sub

            End If

        End While

    End Sub

End Class



Klasse Form2:
Public Class Form2


    Public Delegate Sub AddItemsToListBoxDelegate(ByVal AddText As String)

    Public Sub additem(ByVal text As String)

        ListBox1.Items.Add(text)
        ListBox1.SelectedIndex = ListBox1.Items.Count - 1

    End Sub

End Class



Ich hoffe, mir kann jemand bei meinem Problem helfen!


Vielen Dank!


MfG
Triale

Dieser Beitrag wurde von Triale bearbeitet: 08. September 2011 - 20:19

0

Anzeige



Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0