Pre.net Ich verwendete MFC, ON_UPDATE_COMMAND_UI und die CCmdUI-Klasse, um den Status meiner Windows-Benutzeroberfläche zu aktualisieren. Von der älteren MFC/Win32 Referenz:Aktualisieren von UI-Objekten in Windows-Formularen
Typischerweise Menüpunkte und Schaltflächen der Symbolleiste haben mehr als einen Staat. Für Beispiel ist ein Menüeintrag grau hinterlegt (abgeblendet), wenn es im aktuellen Kontext nicht verfügbar ist. Menüpunkte können auch aktiviert oder deaktiviert werden. Eine Symbolleiste Schaltfläche kann auch deaktiviert werden, wenn nicht verfügbar ist, oder es kann überprüft werden.
Wer aktualisiert den Status dieser Elemente , wenn sich die Programmbedingungen ändern? Wenn ein Menüeintrag einen Befehl erzeugt, der beispielsweise von einem Dokument verarbeitet wird, ist es logisch, dass das Dokument den Menüeintrag aktualisiert. Das Dokument enthält wahrscheinlich die Informationen, auf denen das Update basiert.
Wenn ein Befehl mehr Benutzer-Interface-Objekte (vielleicht ein Menü Element und eine Schaltfläche in der Symbolleiste) hat, sind beide auf die gleiche Handler-Funktion weitergeleitet. Dies kapselt Ihre Benutzerschnittstelle Update-Code für alle gleichwertigen Benutzeroberflächenobjekte in einem einzigen Ort.
Das Framework bietet eine komfortable Schnittstelle für die automatische Aktualisierung von Benutzeroberflächenobjekten. Sie können wählen , um die Aktualisierung auf andere Weise, tun, aber die Schnittstelle ist effizient und einfach zu bedienen.
Wie lautet die Anleitung für .net Windows Forms? Ich verwende einen Application.Idle-Handler im Hauptformular, bin mir aber nicht sicher, ob dies der beste Weg ist. Ungefähr zu der Zeit, als ich alle meine UI-Updates in den Leerlauf-Event-Handler gestellt habe, begann meine App, einige Performance-Probleme zu zeigen, und ich habe noch keine Metriken, um dies nachzuverfolgen. Nicht sicher, ob es verwandt ist.
Was genau sind Sie wieder versuchen zu tun? Versuchen Sie, Steuerelemente in WinForms-Anwendungen zu deaktivieren? –
Deaktivieren/Aktivieren von Symbolleistenschaltflächen, Menüelementen usw. Aktivieren/deaktivieren Sie den Status der Prüftasten in der Symbolleiste, Menüelemente, die einen Prüfstatus anzeigen. Diese Art von Ding. Sehr Routine-Zeug. –
Ja, Application.Idle. Wie Sie ein Perf-Problem haben könnten, wenn die App im Leerlauf ist, ist mysteriös. –