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:
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.
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.