Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

Vererbung/Forms: Designer kann keine Instanz des Types erstellen, da dieser als abstract dekl.
SimpsonFire
myCSharp.de - Member



Dabei seit:
Beiträge: 16

Themenstarter:

Vererbung/Forms: Designer kann keine Instanz des Types erstellen, da dieser als abstract dekl.

beantworten | zitieren | melden

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ß
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von SimpsonFire am .
private Nachricht | Beiträge des Benutzers
Grumbler85
myCSharp.de - Member



Dabei seit:
Beiträge: 550
Herkunft: Rheingau Taunus

beantworten | zitieren | melden

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)
private Nachricht | Beiträge des Benutzers
SimpsonFire
myCSharp.de - Member



Dabei seit:
Beiträge: 16

Themenstarter:

beantworten | zitieren | melden

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ß
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von SimpsonFire am .
private Nachricht | Beiträge des Benutzers
jreusch
myCSharp.de - Member

Avatar #avatar-3346.jpg


Dabei seit:
Beiträge: 303

beantworten | zitieren | melden

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...
private Nachricht | Beiträge des Benutzers
Grumbler85
myCSharp.de - Member



Dabei seit:
Beiträge: 550
Herkunft: Rheingau Taunus

beantworten | zitieren | melden

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)
private Nachricht | Beiträge des Benutzers
FZelle
myCSharp.de - Experte



Dabei seit:
Beiträge: 10084

beantworten | zitieren | melden

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?
private Nachricht | Beiträge des Benutzers