Sein lassen: Keine Klassen vor 'Designable' Klassen - sonst geht nichts mehr


Thomas Wölfer
Thomas Wölfer

17. Mai 2004


Wenn zwei Forms in einem CSharp File hat, dann meckert das (neue) Visual Studio das an. Was man aber wissen sollte ist, das man auch andere Fälle erzeugen kann die Aerger machen, die das Studio bzw. der Forms Editor nicht anmeckern.

Deklartiert man beispielsweise einen Delegate vor einer Form, dann kann man die Form prima im Forms-Editor bearbeiten, und auch zur Laufzeit geht zunächst alles gut.

z.B.:

namespace DIE.Framework.Controls.TableView.Internal.Grid
{
  public delegate bool KeyPressedDelegate(ref Message msg, Keys keyData);
 
  public class DataGridExt : System.Windows.Forms.DataGrid
  {
     // ...

Wenn mann dann im 'DataGridExt' eine ImageList verwendet, und die mit einem Bitmap ausstattet, dann geht zur Übersetzungszeit auch noch alles gut. Versucht man dann eine Instanz des DataGridEx zu erzeugen, bekommt man eine extrem merkwürdige Fehlermeldung, laut der eine Ressource die zur Sprache passt nicht gefunden werden konnte. Außerdem sei auch die Sprachneutrale Ressource nicht zu finden.

Tolle Sache - nur leider hat die Fehlermeldung mangels Informationsgehalt keinerleich hilfreiche Wirkung.

Das Problem sind nämlich keine fehlenden Ressourcen, sondern einfach nur die Zeile des Delegates. Wenn man die unterhalb der Form platziert, dann geht alles.

Das gilt übrigens für alle Klassen die im Designer bearbeitet werden können: Also auch UserControls und Components, nicht nur Forms sind betroffen.