Wenn Sie ein UserControl in den WinForm-Designer laden, führt VisualStudio die InitializeComponent()-Methode des Steuerelements aus, aber nicht dessen Konstruktor. Dies macht einen großen Unterschied, da es durchaus üblich ist, Code im Konstruktor zu haben, der zur Entwurfszeit nicht ausgeführt werden kann.
Wenn Sie ein UserControl zu einem anderen Steuerelement hinzufügen, führt VisualStudio leider die InitializeComponent()-Methode des übergeordneten Steuerelements aus, die die Konstruktoren der untergeordneten Steuerelemente aufruft, und wenn Sie in diesen Konstruktoren eine Ausnahme haben, sitzen Sie fest.
Wie gehen Sie mit diesem Problem um?
0 Stimmen
Wie würde Visual Studio InitialiseComponent aufrufen, ohne eine Instanz zu konstruieren. Der Konstruktor wird garantiert, bevor InitialiseComponent aufgerufen wird.
0 Stimmen
Probieren Sie es einfach aus: Erstellen Sie ein leeres Formular und fügen Sie "throw new Exception()" in die erste Zeile des Konstruktors ein (d.h. vor dem Aufruf von Initializecomponent). Sie werden sehen, dass der Winform-Designer das Formular trotzdem laden kann.