Häufig treten im VS-Designer folgende Fehler auf:
One or more errors encountered while loading the designer. The errors are listed below. Some errors can be fixed by rebuilding your project, while others may require code changes.
- The designer could not be shown for this file because none of the classes within it can be designed. The designer inspected the following classes in the file: <..> --- The base class '<..>' could not be loaded. Ensure the assembly has been referenced and that all projects have been built.
- Exception of type <..> was thrown.
- The designer must create an instance of type <..> but it cannot because the type is declared as abstract.
Diese Fehler treten meist auf, wenn Formulare vererbt werden. Bei einer Form, die direkt von Form erbt, kann man dieses Phänomen nicht beobachten.
Zu den ersten beiden:
Der Designer erstellt die Forms per Reflaction. Das heisst, er muss eine Instanz der Klasse dynamisch erstellen. Wenn man den Konstruktor oder das FormLoad event überschreibt und dort z.B. auf eine Datei zugreifen möchte, dann versucht der VS Designer natürlich auch diese Datei zu laden. Problem ist dann aber auch, dass der Designer im Verzeichnis der Visual Studio 2005 Installation nach der Datei sucht und diese dort nicht findet.
Lösung:
Jedes Control besitzt besitzt ein Property DesignMode
man kann also einfach im OnLoad event oder im Konstruktor mit folgenden Zeilen Code das Problem lösen:
if>( !this.DesignMode )
> return;
>>>
Zu dem Letzten Punkt:
Da der Designer auch das BasisForm laden muss, dieses aber als abstract defeniert ist, raten wir dazu das abstrakt zu entfernen.
Wer es unbedingt braucht, kann dies mit folgenden Code lösen:
#if
DEBUG>
public partial class Form2 : Form>
#else
public abstract partial class Form2 : Form1
#endif