Hallo zusammen,
ich befinde mich grade bei einem Problem in der .NET Desktopentwicklung (Visual Basic, .NET Framework 4.7.2):
Und zwar habe ich (für ein Datensicherungsprogramm) eine ListView, zum Speichern von Quell -und Zielpfäden etc.:
Hat man nun ein Item in der ListView selektiert und man drückt F2, dann kommt man in den (von mir erstellten) Bearbeitungsmodus:
Wenn man nun ein anderes Item in dieser ListView auswählt, dann werden die TextBoxen auf ein gültiges Pfad-Format (Quell -und Zielpfad) überprüft.
[Also, dass z. B. am Anfang des Pfads ein gültiger Laufwerksbuchstabe vorhanden ist]
--> Wenn das Format ok ist, dann wird der Bearbeitungsmodus einfach geschlossen.
--> Wenn das Format NICHT ok ist, soll diese Selektion rückgängig gemacht werden.
Hierfür greife ich auf das SelectedIndexChanged-Event dieser ListView zurück:
currentEditingCntrl ist eine Instanz von einer von mir erstellten Klasse, die Methoden für das Anzeigen des Bearbeitungsmodus bereitstellt.
Mit der Hide()-Funktion verschwindet der Bearbeitungsmodus von der Bildschirmoberfläche und die Funktion gibt "True" zurück,
es sei denn, es liegt ein ungültiges Pfadformat vor, dann gibt die Funktion ein "False" zurück und zeigt dem User eine MessageBox, die die Ursache des Problems beschreibt.
Mit dem inneren Code in der If-Klammer setze ich die ListView-Selektion auf ihren Ursprung zurück.
Jetzt zum Problem:
Durch das Setzen der Selected-Property der ListView wird genau das gleiche Ereignis [SelectedIndexChanged] erneut aufgerufen
und das Programm gerät in eine MessageBox-Endslosschleife, da die Hide()-Fuktion wieder erneut aufgerufen wird.
Wie könnte man es ermöglichen, dass die MessageBox nur einmal angezeigt wird und die ListView-Selektion gleichzeitig auf ihren Ursprung zurückkehrt?
Danke für eure wertvolle Zeit und Danke im voraus!
P. S. bin ganz neu in dem Forum
LG keineahnung
ich befinde mich grade bei einem Problem in der .NET Desktopentwicklung (Visual Basic, .NET Framework 4.7.2):
Und zwar habe ich (für ein Datensicherungsprogramm) eine ListView, zum Speichern von Quell -und Zielpfäden etc.:
Hat man nun ein Item in der ListView selektiert und man drückt F2, dann kommt man in den (von mir erstellten) Bearbeitungsmodus:
Wenn man nun ein anderes Item in dieser ListView auswählt, dann werden die TextBoxen auf ein gültiges Pfad-Format (Quell -und Zielpfad) überprüft.
[Also, dass z. B. am Anfang des Pfads ein gültiger Laufwerksbuchstabe vorhanden ist]
--> Wenn das Format ok ist, dann wird der Bearbeitungsmodus einfach geschlossen.
--> Wenn das Format NICHT ok ist, soll diese Selektion rückgängig gemacht werden.
Hierfür greife ich auf das SelectedIndexChanged-Event dieser ListView zurück:
VB.NET-Quellcode
- Private Sub EntriesView_SelectedIndexChanged(sender As Object, e As EventArgs) Handles EntriesView.SelectedIndexChanged
- If currentEditingCntrl.Hide() = False Then
- For Each iItem As ListViewItem In EntriesView.SelectedItems
- iItem.Selected = False
- Next
- currentEditingCntrl.AttachedListViewItem.Selected = True
- End If
- End Sub
currentEditingCntrl ist eine Instanz von einer von mir erstellten Klasse, die Methoden für das Anzeigen des Bearbeitungsmodus bereitstellt.
Mit der Hide()-Funktion verschwindet der Bearbeitungsmodus von der Bildschirmoberfläche und die Funktion gibt "True" zurück,
es sei denn, es liegt ein ungültiges Pfadformat vor, dann gibt die Funktion ein "False" zurück und zeigt dem User eine MessageBox, die die Ursache des Problems beschreibt.
Mit dem inneren Code in der If-Klammer setze ich die ListView-Selektion auf ihren Ursprung zurück.
Jetzt zum Problem:
Durch das Setzen der Selected-Property der ListView wird genau das gleiche Ereignis [SelectedIndexChanged] erneut aufgerufen
und das Programm gerät in eine MessageBox-Endslosschleife, da die Hide()-Fuktion wieder erneut aufgerufen wird.
Wie könnte man es ermöglichen, dass die MessageBox nur einmal angezeigt wird und die ListView-Selektion gleichzeitig auf ihren Ursprung zurückkehrt?
Danke für eure wertvolle Zeit und Danke im voraus!
P. S. bin ganz neu in dem Forum
LG keineahnung