| |
VB.NET - Ein- und UmsteigerEvents 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. | |
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. | |
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. | |
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. | |
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 | |
Re: Events aller Forms gleich behandeln | | | Autor: Novatlan | Datum: 11.07.21 20:36 |
| Fantastisch, ganz herzlichen Dank!!! | |
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. | |
| 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 |
|
|
Neu! sevPopUp 2.0
Dynamische Kontextmenüs!
Erstellen Sie mit nur wenigen Zeilen Code Kontextmenüs dynamisch zur Laufzeit. Vordefinierte Styles (XP, Office, OfficeXP, Vista oder Windows 8) erleichtern die Anpassung an die eigenen Anwendung... Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|
|
|
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
|
|