Erstmal ein Nettes Hallo in die Runde ...
Ich würde gerne von euch eine rückmeldung haben ob es an meiner Methode wie ich Steuerelemente aus einem anderem Thread Update etwas auszusetzen gibt oder ob das so ligitim ist !!
Kurze Hintergrund Info ...
Ich habe eine Form mit ca 30 Textboxes und diverse Listboxes, da ich nicht für jede einzelne box nen delegaten mit dazugehöriger subroutine schreiben möchte, habe ich mir überlegt das ich einen Delegaten zum Updaten der Texte in Textboxen schreibe und einen der in Listboxen einen neuen eintrag hinzufügt usw ...
Vorab noch, es funktioniert so tadellos. Aber bei mir schleichen sich sehr oft zweifel ein ob ich da irgendein mist e der zwar klappt, aber nur weil im hintergrund 1000 schutzmechanismen im .Net Framework greifen müssen. Wovon ich jetzt nicht ausgehe weil ich keine warnungen oder sonstigen fehler in der console gezeigt bekomme ...
So hier mein Code !
PS: Oder gibt es sogar noch eine bessere ( z.B. weniger code ) methode für mein Anliegen
Ich würde gerne von euch eine rückmeldung haben ob es an meiner Methode wie ich Steuerelemente aus einem anderem Thread Update etwas auszusetzen gibt oder ob das so ligitim ist !!
Kurze Hintergrund Info ...
Ich habe eine Form mit ca 30 Textboxes und diverse Listboxes, da ich nicht für jede einzelne box nen delegaten mit dazugehöriger subroutine schreiben möchte, habe ich mir überlegt das ich einen Delegaten zum Updaten der Texte in Textboxen schreibe und einen der in Listboxen einen neuen eintrag hinzufügt usw ...
Vorab noch, es funktioniert so tadellos. Aber bei mir schleichen sich sehr oft zweifel ein ob ich da irgendein mist e der zwar klappt, aber nur weil im hintergrund 1000 schutzmechanismen im .Net Framework greifen müssen. Wovon ich jetzt nicht ausgehe weil ich keine warnungen oder sonstigen fehler in der console gezeigt bekomme ...
So hier mein Code !
Code:
Public Class Form1
Public Delegate Sub textbox_delegate(ByVal thisvalue As Object, ByVal this_control As TextBox)
Public Delegate Sub listbox_delegate(ByVal thisvalue As Object, ByVal this_control As ListBox)
Sub Textbox_text_update(ByVal thisvalue As String, ByVal this_control As TextBox)
this_control.Text = thisvalue
End Sub
Sub Textbox_bgcolor_update(ByVal thisvalue As Color, ByVal this_control As TextBox)
this_control.BackColor = thisvalue
End Sub
Sub Listbox_value_add(ByVal thisvalue As String, ByVal this_control As ListBox)
this_control.Items.Add(thisvalue)
End Sub
Private Sub btn_test_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_test.Click
BGW.RunWorkerAsync()
End Sub
Private Sub BGW_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BGW.DoWork
Dim geklappt As Boolean = False
Dim fillthistext As String
Dim bg_color As New Color
fillthistext = "BLABLABLA"
bg_color = Color.Red
txt_textbox_1.Invoke(New textbox_delegate(AddressOf Textbox_text_update), fillthistext, txt_textbox_1)
txt_textbox_1.Invoke(New textbox_delegate(AddressOf Textbox_bgcolor_update), bg_color, txt_textbox_1)
lb_listbox.Invoke(New listbox_delegate(AddressOf Listbox_value_add), fillthistext, lb_listbox)
fillthistext = "BLUBBLUBBLUB"
bg_color = Color.Yellow
txt_textbox_2.Invoke(New textbox_delegate(AddressOf Textbox_text_update), fillthistext, txt_textbox_2)
txt_textbox_2.Invoke(New textbox_delegate(AddressOf Textbox_bgcolor_update), bg_color, txt_textbox_2)
lb_listbox.Invoke(New listbox_delegate(AddressOf Listbox_value_add), fillthistext, lb_listbox)
fillthistext = "HAHAHAHAHAH"
bg_color = Color.Blue
txt_textbox_3.Invoke(New textbox_delegate(AddressOf Textbox_text_update), fillthistext, txt_textbox_3)
txt_textbox_3.Invoke(New textbox_delegate(AddressOf Textbox_bgcolor_update), bg_color, txt_textbox_3)
lb_listbox.Invoke(New listbox_delegate(AddressOf Listbox_value_add), fillthistext, lb_listbox)
fillthistext = "HIHIHIHIHIHIH"
bg_color = Color.Orange
txt_textbox_4.Invoke(New textbox_delegate(AddressOf Textbox_text_update), fillthistext, txt_textbox_4)
txt_textbox_4.Invoke(New textbox_delegate(AddressOf Textbox_bgcolor_update), bg_color, txt_textbox_4)
lb_listbox.Invoke(New listbox_delegate(AddressOf Listbox_value_add), fillthistext, lb_listbox)
End Sub
PS: Oder gibt es sogar noch eine bessere ( z.B. weniger code ) methode für mein Anliegen
Zuletzt bearbeitet: