kostenloser Webspace werbefrei: lima-city


Form.Load()-Ereignis auslösen

lima-cityForumProgrammiersprachenBasic

  1. Autor dieses Themas

    lccserver

    Kostenloser Webspace von lccserver

    lccserver hat kostenlosen Webspace.

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. cbhp

    Co-Admin Kostenloser Webspace von cbhp

    cbhp hat kostenlosen Webspace.

    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...
  4. Autor dieses Themas

    lccserver

    Kostenloser Webspace von lccserver

    lccserver hat kostenlosen Webspace.

    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
  5. cbhp

    Co-Admin Kostenloser Webspace von cbhp

    cbhp hat kostenlosen Webspace.

    Public NewForm As New Form2()


    In dieser einzigen Zeile wird das Load-Ereignis automatisch ausgelöst!
  6. Autor dieses Themas

    lccserver

    Kostenloser Webspace von lccserver

    lccserver hat kostenlosen Webspace.

    Und wenn das Form2 bereits geöffnet ist, wird es NICHT noch einmal geöffnet?
  7. cbhp

    Co-Admin Kostenloser Webspace von cbhp

    cbhp hat kostenlosen Webspace.


    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.
  8. Autor dieses Themas

    lccserver

    Kostenloser Webspace von lccserver

    lccserver hat kostenlosen Webspace.

    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.
  9. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!