Thomas Woelfers Baustatik Blog

Baustatik-Software und was sonst des Weges kommt

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

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.

 

Comments are closed