Gibt es eine Möglichkeit, dass das Hauptformular Ereignisse abfangen kann, die auf einem Untersteuerelement eines Benutzersteuerelements ausgelöst werden?Wie greife ich Ereignisse von Untersteuerelementen auf einem Benutzersteuerelement in einer WinForms-App?
Ich habe eine benutzerdefinierte Benutzersteuerung in das Hauptformular meiner Anwendung eingebettet. Das Steuerelement enthält verschiedene Untersteuerelemente, die Daten bearbeiten, die wiederum von anderen Steuerelementen im Hauptformular angezeigt werden. Was ich möchte ist, wenn das Hauptformular irgendwie informiert werden könnte, wenn der Benutzer Untersteuerungen ändert, so dass ich die Daten und die entsprechende Anzeige an anderer Stelle aktualisieren könnte.
Gerade jetzt betrüge ich. Ich habe einen Delegierten an das Fokus-Verlassen-Ereignis der Untersteuerungen angeschlossen. Dieser Delegat ändert eine Eigenschaft des Benutzersteuerelements, das ich nicht anderweitig verwende (in diesem Fall CausesValidation). Ich habe dann einen Delegaten im Hauptformular definiert, wenn sich die CausesValidation-Eigenschaft des Benutzersteuerelements ändert, was dann die App anweist, die Daten zu aktualisieren und anzuzeigen.
Ein Problem entsteht, weil ich auch einen Delegaten eingerichtet habe, wenn der Fokus die Benutzersteuerung verlässt, weil ich die Felder in der Benutzersteuerung überprüfen muss, bevor ich dem Benutzer erlauben kann, etwas anderes zu tun. Wenn der Benutzer jedoch nur zwischen Untersteuerungen wechselt, möchte ich nicht überprüfen, da die Bearbeitung möglicherweise nicht erfolgt.
Grundsätzlich möchte ich, dass die Daten aktualisiert werden, wenn der Benutzer die Untersteuerungen wechselt ODER die Benutzersteuerung behält, aber nicht validiert. Wenn der Benutzer das Steuerelement verlässt, möchte ich es aktualisieren und validieren. Wenn Sie jetzt die Benutzersteuerung verlassen, wird die Validierung zweimal ausgelöst.
Was ist falsch daran, das Hauptformular an die verschiedenen Ereignisse der Steuerelemente zu binden? Es gibt eine Menge Ereignisse, die für die meisten Winform-Steuerelemente ausgelöst werden. – Sekhat
Ich denke, ich verstehe einfach nicht, was du erreichen willst: P – Sekhat
Um die erste Frage zu beantworten, durch den Designer (was ich, relativ neu in C#, verwendet für meine GUI-Bearbeitung), hat mein Formular nur Zugriff auf die Ereignisse, die vom Benutzersteuerelement ausgelöst werden, und nicht seine Untersteuerungen. Woran ich mich nicht erinnern konnte ist, dass ich meine eigenen Ereignisse feuern und mit denen umgehen kann. –