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

  • »
  • Community
  • |
  • Diskussionsforum
Der Konstruktor für den Typ ... gefunden
GambaJo
myCSharp.de - Member

Avatar #avatar-4143.jpg


Dabei seit:
Beiträge: 105

Themenstarter:

Der Konstruktor für den Typ ... gefunden

beantworten | zitieren | melden

Erstelle gerade eine kleine Applikation mit einem MDI-Container, einem BaseFrame und einzelnen Frames, die abgeleitet sind von der BaseFrame. So weit alles ok. Wenn ich aber die Ableitung in die Frames eintrage, wird mir in der Entwurfs-Ansicht nicht mehr das Frame angezeigt, sondern die Fehlermeldung "Der Konstruktor für den Typ BaseFrame wurde nicht gefunden."
Sobald ich die Ableitung rausnehme, geht alles wieder wie gewohnt.

public partial class BaseFrame : Form
    {
        public const int fsEmpty = 0;
        private ToolStripMenuItem p_MenuItem;
        public BaseFrame(ToolStripMenuItem ParentMenuItem)
        {
            InitializeComponent();
            p_MenuItem = ParentMenuItem;
            SetButtonStatus(p_MenuItem, false);
            this.Closed += new System.EventHandler(this.BaseFrame_Closed);
        }

public partial class frmCountry : BaseFrame
    {
        public frmCountry(ToolStripMenuItem mItem, int iStatus) : base(mItem)
        {
            InitializeComponent();
        }
    }
bei System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
bei System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
bei System.ComponentModel.Design.DesignSurface.CreateInstance(Type type)
bei Microsoft.VisualStudio.Design.VSDesignSurface.CreateInstance(Type type)
bei System.ComponentModel.Design.DesignerHost.System.ComponentModel.Design.IDesignerHost.CreateComponent(Type componentType, String name)
bei System.ComponentModel.Design.Serialization.DesignerSerializationManager.CreateInstance(Type type, ICollection arguments, String name, Boolean addToContainer)
bei System.ComponentModel.Design.Serialization.DesignerSerializationManager.System.ComponentModel.Design.Serialization.IDesignerSerializationManager.CreateInstance(Type type, ICollection arguments, String name, Boolean addToContainer)
bei System.ComponentModel.Design.Serialization.TypeCodeDomSerializer.Deserialize(IDesignerSerializationManager manager, CodeTypeDeclaration declaration)
bei System.ComponentModel.Design.Serialization.CodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager manager)
bei Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager serializationManager)
bei System.ComponentModel.Design.Serialization.BasicDesignerLoader.BeginLoad(IDesignerLoaderHost host)
private Nachricht | Beiträge des Benutzers
talla
myCSharp.de - Experte

Avatar #avatar-3214.jpg


Dabei seit:
Beiträge: 6.862
Herkunft: Esslingen

beantworten | zitieren | melden

Der Designer verlangt parameterlose Konstruktoren, und zumindest in deinen geposteten Code sind die nicht vorhanden.
Baka wa shinanakya naoranai.

Mein XING Profil.
private Nachricht | Beiträge des Benutzers
GambaJo
myCSharp.de - Member

Avatar #avatar-4143.jpg


Dabei seit:
Beiträge: 105

Themenstarter:

beantworten | zitieren | melden

Ich bin mir nicht sicher, ob ich dich verstehe. Ich hab mal die Parameter aus den Konstruktoren entfernt, hat aber nicht geholfen.

Hier gibt es aber auch ein Beispiel mit Konstruktoren mit Parametern.
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

Hallo GambaJo,

natürlich kann man Konstruktoren mit Parametern definieren. Es geht hier aber nicht um eine Einschränkung von C#, sondern des Designers. Guck man in den designer-generierten Teil der partial class frmCountry. Darin ist bestimmt ein parameterloser Konstruktor ohne base-Klausel enthalten. Das bedeutet, dass der parameterlose Konstruktor von BaseFrame verwendet werden soll. Den gibt es aber vermutlich nicht. Definiere diesen.

herbivore
private Nachricht | Beiträge des Benutzers
GambaJo
myCSharp.de - Member

Avatar #avatar-4143.jpg


Dabei seit:
Beiträge: 105

Themenstarter:

beantworten | zitieren | melden

Ja, Du scheinst Recht zu haben. Hab das jetzt so umgeschrieben, daß es klappt:

    public partial class frmCountry : BaseFrame
    {
        public frmCountry(ToolStripMenuItem mItem, int iStatus)/* : base(mItem)*/
        {
            InitializeComponent();
            base.SetButtonStatus(mItem,false);
        }
    }

    public partial class BaseFrame : Form
    {
        public const int fsEmpty = 0;
        private ToolStripMenuItem p_MenuItem;
        public BaseFrame()
        {
            InitializeComponent();
            this.Closed += new System.EventHandler(this.BaseFrame_Closed);
        }

Ich würd aber trotzdem gern Parameter an die Klasse BaseFrame übergeben, habe aber die Stelle im Designer nicht gefunden, wo ich den ostruktor entsprechend abändern muß. Gibt's da ein Beispiel zu?
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

Hallo GambaJo,
Zitat
Der Designer verlangt parameterlose Konstruktoren,
mach für jeden zu "übergebenden" Wert eine Property und setze diese Properties, nach dem das Form erzeugt ist.

herbivore

PS: Du kannst natürlich zusätzlich die Konstruktoren mit den Parametern weiter verwenden. Eine Klasse kann bel. viele Konstruktoren besitzen.
private Nachricht | Beiträge des Benutzers
GambaJo
myCSharp.de - Member

Avatar #avatar-4143.jpg


Dabei seit:
Beiträge: 105

Themenstarter:

beantworten | zitieren | melden

Jetzt hab ich es. Hab zwei Konstruktoren in BaseFrame. Einen mit und einen ohne Parameter.
private Nachricht | Beiträge des Benutzers