Form.Load()-Ereignis auslösen
lima-city → Forum → Programmiersprachen → Basic
aufruf
auftreten
beachtung
code
deklaration
einzigen zeile
ereignis
fenster
form
klasse code
kleiner nachtrag
kopie
laden
leute
problem
show
text
verzichten
zugreifen
zugriff
-
Hi Leute,
ich habe wieder mal ein Problem:
Ich möchte von zwei verschiedenen Threads auf ein Form zugreifen. Ich brauche für den Threadsicheren Zugriff auf verschiedenen Steuerelemente das FORM.LOAD()-Ereignis um Invoke oder BeginInvoke verwenden zu können. Bis hierher ist das kein Problem - Man kann ja vor jedem Invoke() oder BeginInvoke() Form.Show() aufrufen. Nun aber mein Problem:
Ich möchte von den beiden Threads auf das Form zugreifen, aber wenn ich Form.Show() angebe, wird das Fenster bei jedem Aufruf eines Threads neu geladen...
Wie kann ich das Form.Load()-Ereignis auslösen, ohne das Fenster immer neu laden zu müssen, so dass beide Threads auf das selbe Form zugreifen?
thx -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Wie bereits in dem anderem Beitrag gesagt, löst die Show() Methode NICHT das Load-Ereignis aus.
Das Load-Ereignis wird bereits beim Initialisieren der Form ausgelöst, also z.B. wenn die Form neu deklariert wird mit dem Schlüsselwort \"NEW\".
Damit bei jedem Aufruf deines Threads die Form nicht neu geladen wird, solltest du die Form global (public) deklarieren.
lccserver schrieb:
Wie kann ich das Form.Load()-Ereignis auslösen, ohne das Fenster immer neu laden zu müssen, so dass beide Threads auf das selbe Form zugreifen?
Dieses Problem darf eigentlich nicht auftreten. Anscheinend hast du kreuz und quer ohne Beachtung von Klassen und Ebenen programmiert... -
Das heißt ich soll das wie folgt machen:
Deklaration & Zugriff durch Thread-Klasse:
... Public NewForm As New Form2() Private Sub IRGENDWAS() NewForm.Show() \'oder wie funktioniert .Load() ?? End Sub
Oder wie muss ich das machen?
Beitrag geändert: 15.2.2008 17:19:33 von lccserver -
Public NewForm As New Form2()
In dieser einzigen Zeile wird das Load-Ereignis automatisch ausgelöst!
-
Und wenn das Form2 bereits geöffnet ist, wird es NICHT noch einmal geöffnet?
-
Und wenn das Form2 bereits geöffnet ist, wird es NICHT noch einmal geöffnet?
Sorry, aber was willst denn du jetzt?
Public NewForm As New Form2() bewirkt, dass die Variable \"NewForm\" eine Kopie der \"Form2\" erhält und
danach unabhängig von Form2 arbeitet.
Wenn du übrigens mit VB 2005 arbeitest, kann man übrigens auf eine Neudeklaration verzichten sondern direkt auf die Formen zugreifen. -
Ein kleiner Nachtrag:
Dim FormB as Form2 For Each FormA As Form In My.Application.OpenForms If FormA Is Form2 Then FormB = FormA End If Next
Wenn bereits ein Form2 geöffnet ist, wird dieses dann praktisch in FormB kopiert.
Man kann nun z.B.: FormB.Text = "123" angeben, dabei wird der Text in der Titelleiste des
Form2 geändert. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage