title image


Smiley Ändern der Text-Eigenschaft durch Thread
Hallo zusammen,



ich bin auf ein Phänomen gestoßen, das ich nicht nachvollziehen kann.

Ich programmiere in Visual Basic, Compact Framework.

Es geht um einen Thread, der bei Klick eines Buttons gestartet wird, und mit einer Funktion verbunden ist, die Eigenschaften graf. Elemente (hier: Textfelder) aktualisiert.



Bei Klick auf einen Button (nennen wir ihn "Akt. Text") wird die Routine aktualisiereText() ausgeführt, die Messagebox erscheint, nach OK-Klick steht das Programm, die MainForm rendert sich nicht mehr, der gesamte PDA "steht".

Bei Klick auf einen anderen Button (nennen wir ihn "Akt. Farben") wird die Routine aktualisiereFarben() ausgeführt, die Messagebox erscheint, nach OK-Klick ist der Text der geänderten Felder rot; das lässt sich beliebig oft wiederholen und mein PDA läuft weiter.



Herausgefunden habe ich, dass es mit der Message-Box (es könnte auch eine andere, darüberliegende Form sein; Hauptsache ein darüberliegendes grafisches Element) zusammenhängt. Lasse ich die MessageBox weg, funktioniert auch das Aktualisieren des Textes.



Meine Frage: Warum funktioniert das Aktualisieren des Textes nicht, aber das der Farben???



Gruß

Jan







Codeauszug des Beispiels:



' Ausgelöst bei Klick auf den Button "Akt. Text"

Private Sub btnAktualisieren_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAktualisierenText.Click

thr1 = New Thread(AddressOf aktualisiereText)

thr1.Start()

End Sub



Private Sub aktualisiereText()

MessageBox.Show("Akt. Text!")

txtVorname.Text = "AAA"

txtNachname.Text = "BBB"

txtTitel.Text = "CCC"

txtNationalitaet.Text = "DDD"

End Sub





' Ausgelöst bei Klick auf den Button "Akt. Farben"

Private Sub btnAktualisierenFarben_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAktualisierenFarben.Click

thr1 = New Thread(AddressOf aktualisiereFarben)

thr1.Start()

End Sub



Private Sub aktualisiereFarben()

MessageBox.Show("Akt. Farben!")

txtVorname.ForeColor = System.Drawing.Color.Red

txtNachname.ForeColor = System.Drawing.Color.Red

txtTitel.ForeColor = System.Drawing.Color.Red

txtNationalitaet.ForeColor = System.Drawing.Color.Red

End Sub



geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: