Nabend zusammen
Musste mich heute nochmal mit Klassen beschäftigen. Insbesondere, das Klassen untereinander kommunizieren und Methoden aufrufen können.
Ich habe in einem Projekt folgendes. Hier mal nur einfach abgebildet.
Von der GUI wird per klick eine Methode in
Nach Abarbeitung der Methode ruft nun die
Nach Abarbeitung ruft die
Die DebugAusgaben:
Das ist ein Test in der Klasse WriteFiles.
Das ist der Text mit dem 2ten Parameter.
OK auf dem form
'----------------
Soweit klappt das ja alles.
Was mir nur so Kopfzerbrechen macht, und mir (mal wieder mein Asperger) so unnütz viel vorkommt, ist diese Menge an Code damit die Klassen untereinander sich austauschen können.
Das geht doch bestimmt einfacher
Spoiler anzeigen
Musste mich heute nochmal mit Klassen beschäftigen. Insbesondere, das Klassen untereinander kommunizieren und Methoden aufrufen können.
Ich habe in einem Projekt folgendes. Hier mal nur einfach abgebildet.
Von der GUI wird per klick eine Methode in
Class WriteFiles
mit einem bestimmte Parameter aufgerufen. Nach Abarbeitung der Methode ruft nun die
Class WriteFiles
eine Methode in der Class DeleteFiles
auf.Nach Abarbeitung ruft die
Class DeleteFiles
nun wieder die selbe / gleiche Methode in der Class WriteFiles
mit einem weiteren Parameter auf, die dann, nach erneuter Abarbeitung, letztendlich ein Event feuert, was auf der GUI angezeigt wird.Die DebugAusgaben:
Das ist ein Test in der Klasse WriteFiles.
Das ist der Text mit dem 2ten Parameter.
OK auf dem form
'----------------
Soweit klappt das ja alles.
Was mir nur so Kopfzerbrechen macht, und mir (mal wieder mein Asperger) so unnütz viel vorkommt, ist diese Menge an Code damit die Klassen untereinander sich austauschen können.
Das geht doch bestimmt einfacher
VB.NET-Quellcode
-
- Public Class frmMain
- Private WithEvents driveManager As New DriveManager()
- Private WithEvents fileWriter As WriteFiles
- Private WithEvents fileDeleter As DeleteFiles
- Private Sub InitializeClasses()
- ' Hier die Referenzen in den jeweiligen Klassen
- fileWriter.SetDeleteFiles(fileDeleter)
- fileDeleter.SetWriteFiles(fileWriter)
- End Sub
- Public Sub New()
- ' Hier werden die Objekte erstellt
- fileWriter = New WriteFiles(driveManager, Nothing)
- fileDeleter = New DeleteFiles(driveManager, Nothing)
- ' Setze die Referenzen in den jeweiligen Klassen
- InitializeClasses()
- ' Initialisierung des Formulars
- InitializeComponent()
- End Sub
- Private Sub btnSend_Click(sender As Object, e As EventArgs) Handles btnSend.Click
- fileWriter.ShowMessageInWriteFiles(1)
- End Sub
- Private Sub ReciveEvnet(sender As Object, isSuccsess As Boolean) Handles fileWriter.Notifire
- If isSuccsess Then Debug.WriteLine("OK auf dem form")
- End Sub
- End Class
VB.NET-Quellcode
-
- Public Class DeleteFiles
- ' Referenz auf den DriveManager & WriteFiles
- Private driveManager As DriveManager
- Private WithEvents fileWriter As WriteFiles
- ' Konstruktor, um den DriveManager zu übergeben und zuzuweisen
- Public Sub New(driveManager As DriveManager, driveFormater As WriteFiles)
- Me.driveManager = driveManager
- Me.fileWriter = fileWriter
- End Sub
- ' Methode zum Setzen des WriteFiles-Objekts
- Public Sub SetWriteFiles(fileWriterInstance As WriteFiles)
- Me.fileWriter = fileWriterInstance
- End Sub
- ' Methode öffentlich für die WriteFilesClass
- Public Sub ShowMessageInDeleteFiles()
- Dim className As String = Me.GetType().Name
- Dim message As String = $"Das ist ein Test in der Klasse {className}."
- Debug.WriteLine(message)
- End Sub
- ' Hier wieder zurück zur WriteFilesClass
- Public Async Sub ReadInWriteFiles()
- Await Task.Delay(2000)
- fileWriter.ShowMessageInWriteFiles(2)
- End Sub
- End Class
VB.NET-Quellcode
-
- Public Class WriteFiles
- Public Event Notifire As EventHandler(Of Boolean)
- ' Referenz auf den DriveManager & DeleteFiles
- Private driveManager As DriveManager
- Private WithEvents fileDeleter As DeleteFiles
- ' Konstruktor, um den DriveManager zu übergeben und zuzuweisen
- Public Sub New(driveManager As DriveManager, driveFormater As DeleteFiles)
- Me.driveManager = driveManager
- Me.fileDeleter = fileDeleter
- End Sub
- ' Methode zum Setzen des DeleteFiles-Objekts
- Public Sub SetDeleteFiles(fileDeleterInstance As DeleteFiles)
- Me.fileDeleter = fileDeleterInstance
- End Sub
- ' Methode öffentlich für die DeleteFilesClass
- Public Async Sub ShowMessageInWriteFiles(para As Integer)
- Dim className As String = Me.GetType().Name
- Dim message1 As String = $"Das ist ein Test in der Klasse {className}."
- Dim message2 As String = $"Das ist der Text mit dem 2ten Parameter."
- If para = 1 Then
- Debug.WriteLine(message1)
- Await Task.Delay(1000)
- ' Hier zur Class DeleteFiles
- fileDeleter.ReadInWriteFiles()
- ElseIf para = 2 Then
- Debug.WriteLine(message2)
- RaiseEvent Notifire(Me, True)
- Else
- Debug.WriteLine("Ungültiger Parameterwert. Bitte 1 oder 2 verwenden.")
- End If
- End Sub
- ' Hier aus der DeleterClass lesen
- Private Sub ReadInDeleteFiles()
- fileDeleter.ShowMessageInDeleteFiles()
- End Sub
- End Class
Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen.