Hallo,
ich habe ein eigenes Control erstellt, welches von TreeView erbt:
public class MyTreeView : TreeView
Diese MyTreeView wird auf einer Form namens "MyEditor" angezeigt.
public class MyEditor : Form
Ich möchte in der Klasse MyTreeView gerne einen Konstruktor haben, der eine Referenz auf die Form "MyEditor" übergeben bekommt.
public MyTreeView(MyEditor editor) : base()
{
this.editor = editor
...
}
Im vom Designer generierten Code für den MyEditor wird wenn ich die MyTreeView auf die Form MyEditor ziehe, der parameterlose Konstruktur für MyTreeView aufgerufen.
Diesen Konstruktor möchte ich natürlich nicht aufrufen, sondern den mit der Referenz auf den MyEditor, also ... new MyTreeView(this);
Wenn ich das gemacht habe, dann kann ich MyEditor nicht mehr im Designer anzeigen lassen und es kommt folgende Exception:
Type "... .MyEditor" does not have a constructor with parameters of types Form"
Beim Builden hat er keine Probleme, auch wenn ich das Programm starte, läuft alles so, wie es soll (d. h. auch die MyTreeView hält schön eine Referenz auf den MyEditor).
Hat jemand eine Idee, wie ich es schaffe, dass der Designer den MyEditor richtig anzeigt?
Besten Dank im Voraus!
Philipp
Parameterlosen Constructor erstellen
Und zusätzlich ein MyEditor-Property
Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...
Das habe ich bereits probiert, aber auch da meckert er mit der gleichen Exception.
Vielleicht nochmal zur Klarstellung: Ich verändere bewusst den Designer-generierten Code indem ich beim Konstruktoraufruf für MyTreeView die this-Referenz (= Referenz auf MyEditor) übergebe.
Wenn ich übrigens im Konstruktor den Typ der Referenz nicht auf "MyEditor" sondern auf "Form" setze, dann klappt der Aufruf soweit. Aber im Konstruktor-Code selbst schreibe ich dann ja
this.myEditor = (MyEditor) myEditor
um die Referenz zu setzen. Den Cast muss ich durchführen, da im Konstruktorparameter ja der Typ "Form" steht.
Und wenn ich mir jetzt den MyEditor im Designer anschauen möchte, meckert er, dass er genau obigen Cast nicht durchführen kann.
Muss ich eigentlich beim parameterlosen Konstruktor auch den KOnstruktor der Oberklasse per :base() aufrufen? Das habe ich bisher immer so gemacht.