vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Events aller Forms gleich behandeln 
Autor: Novatlan
Datum: 11.07.21 13:26

Hallo!

Ich habe ein Projekt mit mehreren Dutzend Forms.
In jedem dieser Forms muss ich mehrere Events behandeln, z.B. Load, KeyPress, Closing, etc...
Jedes dieser Events ruft jeweils eine Funktion in einer externen Bibliothek auf und passed sich selbst als Parameter (also z.b. externeDll.functionName(Me) ).

Ist es möglich, diese Handler nur 1mal zu definieren, oder muss ich in jedem der dutzende Forms denselben Code schreiben?
Also z.b. statt in jedem Form

  Private Sub frm_welcomeCenter_LocationChanged(sender As Object, e As _
    EventArgs) Handles Me.LocationChanged
        mod_globalForms.changePopupLocation(Me)
    End Sub
schreiben zu müssen (dutzende Male, jeweils für gut ein Dutzend Events), kann ich an 1 Stelle 1mal sowas wie

  Public Sub frm_form_LocationChanged(sender As Object, e As EventArgs) Handles _
    ANY FORM.LocationChanged
        mod_globalForms.changePopupLocation(Me)
    End Sub
schreiben?

Ich habe heute schon stundenlang gesucht und leider nichts gefunden.

Beitrag wurde zuletzt am 11.07.21 um 13:26:44 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Events aller Forms gleich behandeln 
Autor: JangoF
Datum: 11.07.21 13:53

Ich würde die Ereignisse alle in eine Klasse auslagern.
Die Klasse würde ich dann im Load Ereignis jeder Form definieren und ihr die Form(Me) übergeben.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Events aller Forms gleich behandeln 
Autor: JangoF
Datum: 11.07.21 14:08

Kleines Beispiel ...

Public Class Form1
    Private MyFormsKlasse As FormsKlasse
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        MyFormsKlasse = New FormsKlasse(Me)
    End Sub
 
End Class
 
Public Class Form2
    Private MyFormsKlasse As FormsKlasse
    Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        MyFormsKlasse = New FormsKlasse(Me)
    End Sub
 
End Class
 
Friend Class FormsKlasse
    Private WithEvents MyForm As Form
 
    Friend Sub New(f As Form)
        MyForm = f
    End Sub
 
    Private Sub MyForm_Click(sender As Object, e As EventArgs) Handles _
      MyForm.Click
        MsgBox("click")
    End Sub
 
    Private Sub MyForm_Closing(sender As Object, e As CancelEventArgs) Handles _
      MyForm.Closing
        MsgBox("Closing")
    End Sub
 
    Private Sub MyForm_KeyPress(sender As Object, e As KeyPressEventArgs) _
      Handles MyForm.KeyPress
        MsgBox("keyPress")
    End Sub
End Class


Beitrag wurde zuletzt am 11.07.21 um 14:09:26 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Events aller Forms gleich behandeln 
Autor: Novatlan
Datum: 11.07.21 16:23

Ganz herzlichen Dank!
Das ist genau was ich suche!

Jetzt hängt es nur noch an der Übergabe einiger Controls.
Und zwar muss einer der Handler ein Tooltip übergeben.

Das klappt innerhalb des Forms auch ganz wunderbar, aber
functionName(MyForm,Tooltip1)
geht natürlich nicht.
(die Funktion erwartet ein Form und ein ToolTip als Übergabeparameter. Klappt auch alles wunderbar, die Frage ist eben wie ich in der "Hilfsklasse" an das ToolTip rankomme.)
MyForm.Controls.Find("ToolTip1", True)
geht auch nicht, weil ein Tooltip ja kein Control ist.

Gibt es da eine Lösung?

Beitrag wurde zuletzt am 11.07.21 um 16:25:23 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Events aller Forms gleich behandeln 
Autor: JangoF
Datum: 11.07.21 19:40

Du must der Klasse sowohl das Control als auch das Tooltip mitgeben.

Public Class Form1
    Private MyFormsKlasse As FormsKlasse
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        MyFormsKlasse = New FormsKlasse(Me, Me.Button1, Me.ToolTip1)
 
    End Sub
 
End Class
Friend Class FormsKlasse
    Private WithEvents MyForm As Form
    Private MyControl As Control
    Private MyTooltip As ToolTip
    Friend Sub New(f As Form, c As Control, t As ToolTip)
        MyForm = f
        MyControl = c
        MyTooltip = t
    End Sub
 
    Private Sub MyForm_Click(sender As Object, e As EventArgs) Handles _
      MyForm.Click
        MyTooltip.SetToolTip(MyControl, "ToolTipText")
    End Sub
End Class
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Events aller Forms gleich behandeln 
Autor: Novatlan
Datum: 11.07.21 20:36

Fantastisch, ganz herzlichen Dank!!!
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Events aller Forms gleich behandeln 
Autor: Manfred X
Datum: 12.07.21 14:52

Hallo!

Warum eine neue Klasse programmieren?
Man packt diese Events in eine Stammklasse und
leitet einfach weitere Formulare davon ab.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel