Laden...

Designer zeigt mein Control nicht an

Erstellt von Elophant vor 18 Jahren Letzter Beitrag vor 18 Jahren 1.267 Views
E
Elophant Themenstarter:in
6 Beiträge seit 2006
vor 18 Jahren
Designer zeigt mein Control nicht an

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

4.221 Beiträge seit 2005
vor 18 Jahren

Parameterlosen Constructor erstellen

Und zusätzlich ein MyEditor-Property

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

E
Elophant Themenstarter:in
6 Beiträge seit 2006
vor 18 Jahren

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.