Die Rolle der BeginInit () - und EndInit () -Methoden in Designer

8

Ich habe rot, dass diese Methoden von ISupportInitialize interface von Designer verwendet werden, um die Optimierung zu unterstützen, die Atomizität der Initialisierung von Steuerelementen sicherzustellen und jede Aktion von Steuerelementen während der Initialisierung zu verhindern. Meine Fragen sind:

  1. Wie helfen sie Designer, die Initialisierung von Steuerelementen zu optimieren?
  2. Warum Atomizität der Initialisierung sicherstellen?
  3. Gibt es ein vernünftiges Beispiel für die Verwendung in Code, der nicht von Designer generiert wurde?
Rafał Ryszkowski 26.05.2015, 15:27
quelle

2 Antworten

5

Es hat nichts mit Optimierung zu tun. ISupportInitialize ist eine Schnittstelle, die Sie benötigen, wenn Ihr Steuerelement von der Reihenfolge abhängig ist, in der Eigenschaften zugewiesen werden. Es gibt keine Möglichkeit, die Reihenfolge zu beeinflussen, in der der Designer sie zuordnet, es geschieht alphabetisch.

Normalerweise setzen Sie eine bool Variable in Ihrer BeginInit() -Methode auf true, Sie testen dies in den Eigenschaftensettern und tun nichts, wenn sie gesetzt ist. Ihre Methode EndInit() macht dann die Eigenschaftswerte wirksam.

Sie können ein gutes Beispiel dafür in sehen ErrorProvider-Komponente . Beachten Sie, wie die Methoden verwendet werden, um die Datenbindung zu verzögern. Das PictureBox-Steuerelement ist ein weiteres gutes Beispiel dafür verwendet es, um das Herunterladen von Bildern zu verzögern. TrackBar ist ein weiteres Beispiel, es verwendet es um sicherzustellen, dass die Eigenschaft Value zwischen Minimum und Maximum liegt. Die .NET Framework-Quelle ist oft ein sehr guter Ort, um zu sehen, wie .NET-Typen in der Praxis eingesetzt werden.

    
Hans Passant 26.05.2015 16:39
quelle
0

Per Definition erlaubt der Designer das Erstellen von Steuerelementen in einem visuellen Modus. Der entsprechende Code zum Initialisieren der Steuerelemente wird dann von Visual Studio generiert.

Die Initialisierung wird an einer Stelle durchgeführt, um spätere NULL-Probleme in Ihrem Code zu vermeiden. Sie erwarten tatsächlich alle Steuerelemente, die bereits erstellt werden, wenn Sie ihre Referenz verwenden.

Sie können die Initialisierung Ihrer Steuerelemente perfekt erstellen, wenn Sie beispielsweise Ihre Schnittstelle basierend auf einem bestimmten Konstruktor dynamisch erstellen möchten.

    
LeBaptiste 26.05.2015 15:34
quelle

Tags und Links