Hallo,
habe ein Basis Formular von dem ich alle anderen Formulare ableite.
in meinem Basis Formular habe ich eine Methode deklariert, die ich von den abgeleiteten Formularen überschreiben möchte.
Mein Ansatz:
public abstract partial class frmbasis
{
abstract public void Methode1(ViewStatus s);
}
Das funktioniert auch mit overwrite der Methode1 in den abgeleiteten Formularen.
Nur kann ich wegen abstract den Designer der abgeleiteten Formulare nicht mehr starten.
Fehlermeldung:
Der Designer kann keine Instanz des Types ...... erstellen, da dieser als abstrakt deklariert ist.
Gibt es noch ne andere möglichkeit ?
Gruß
ich würde vermuten du versuchst ein frmbasis zu bearbeiten - das geht nicht.
Der Vorteil der Klugheit liegt darin, dass man sich dumm stellen kann - umgekehrt ist das schon schwieriger (K. Tucholsky)
Das Problem mit Internet-Zitaten ist, dass sie oftmals zu unrecht als authentisch angenommen werden. (K. Adenauer)
Nein.
Habe ein Formular frmBasis.
Und ein Formular FrmC was von frmBasis erbt.
Also .... FrmC : frmBasis
Möchte jetzt auf Methode1 zugreifen.
Damit ich das realisieren kann muss ich diese in frmBasis angeben. Das mache ich mit:
public abstract partial class frmbasis
{
abstract public void Methode1();
}
wichtig ist dabei "abstract"
Die eigentliche Methode befindet sich dann aber in der abgeleiteten Form FrmC
die natürlich auch mit Methode1 bezeichnet werden muß.
public override void Methode1()
{
}
Nur kann ich jetzt das Formular FrmC nicht mehr mit dem Designer öffnen.
Das ist mein großes Problem. Gibt es dafür eine Lösung ?
Gruß
Hallo SimpsonFire,
vielleicht keine gute Lösung, aber du könntest die Basis-Klasse zur Designzeit als 'nicht abstract' deklarieren und die abstrakten Methoden als 'virtual'. Ich denk so kannst du den Designer überreden.
Aber schön ist das auch nicht...
Okay - ich hab's mal versucht und kann das Problem nachvollziehen.
Interessant aber, dass man ohne weiteres die Abstrakte Form selbst bearbeiten kann...
Vielleicht wird dir das helfen können:
MSDN Social: UserControl, Inherited Control, Abstract class, (C#)
Dort im letzten Abschnitt ist ein Workaround, der Funktionieren dürfte.
Der Vorteil der Klugheit liegt darin, dass man sich dumm stellen kann - umgekehrt ist das schon schwieriger (K. Tucholsky)
Das Problem mit Internet-Zitaten ist, dass sie oftmals zu unrecht als authentisch angenommen werden. (K. Adenauer)
Das Thema haben wir schon oft gehabt.
Der Designer versucht beim aufruf einer Form den Parent zu instantiieren und dann die in InitializeComponents stehenden Anweisungen auszuführen.
Deshalb muss der direkte parent einer Form eben auch instanziierbar sein.
Oder man muss den Designer beibringen was er anders machen kann/soll.
Using a Windows Form as an abstract class - which pattern to use?