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
ToolStripControlHost Kontruktor Problem
AmpelB
myCSharp.de - Member



Dabei seit:
Beiträge: 8

Themenstarter:

ToolStripControlHost Kontruktor Problem

beantworten | zitieren | melden

Ich habe eine Checkbox in einen ToolStripControlHost eingebaut:


    public class CheckboxStripItem : ToolStripControlHost
    {
        private CheckBox checkBox;

        public CheckboxStripItem()
            : base(new CheckBox())
        {
            checkBox = Control as CheckBox;
        }

        public bool Checked
        {
            get { return checkBox.Checked; }
            set { checkBox.Checked = value; }
        }

Das funktioniert soweit gut. Im Projekt Explorer wird die Klasse nicht als "normale C#" Klasse dargestellt, sondern als "andere Komponente" (siehe Scrennshot.png).
Nach einem Doppelklick auf die .cs Datei (also der obere Teil des Screenshots), kommt die Fehlermeldung des Designers
Fehler
"Um mögliche Datenverluste zu verhindern, müssen vor dem Laden des Designers folgende Fehler behoben werden:"
. Als Fehler wird angezeigt
Fehler
"Der Konstruktor für den Typ "System.Windows.Forms.ToolStripControlHost" wurde nicht gefunden.".

Beim Compilieren gibt es keine Probleme und das CheckboxStripItem kann ich auch in Menüs einfügen. Aber die Fehlermeldung ist doch nicht richtig?
Bei einem Klick auf die Klasse selber, unterhalb der Datei (im Projekt Explorer) wird der Source Code angezeigt und ich kann ihn auch editieren.

Wieso bekomme ich die Fehlermeldung und kann die Datei nicht "normal" editieren?

Gruß
Erwin
Attachments
private Nachricht | Beiträge des Benutzers
Jompikumpi
myCSharp.de - Member



Dabei seit:
Beiträge: 46

beantworten | zitieren | melden

Der Winforms Designer benutzt ausschließlich Standardkonstruktoren.

Du benutzt

base(new CheckBox())

und dies ist kein Standardkonstruktor.

Siehe auch: how-to-avoid-error-constructor-on-type-mytype-not-found-when-inheriting-a-ba
private Nachricht | Beiträge des Benutzers
ClaraSoft
myCSharp.de - Member



Dabei seit:
Beiträge: 43

beantworten | zitieren | melden

Zitat von Jompikumpi
Der Winforms Designer benutzt ausschließlich Standardkonstruktoren.

Du benutzt

base(new CheckBox())

und dies ist kein Standardkonstruktor.

Siehe auch: how-to-avoid-error-constructor-on-type-mytype-not-found-when-inheriting-a-ba

Laut Doku braucht die Klasse ToolStripControlHost ein Control und/oder ein String im Konstruktor, einen leeren Konstruktor scheint die Klasse nicht zu unterstützten:
ToolStripControlHost Klasse (System.Windows.Forms)

Zumal der Konstruktor von CheckboxStripItem auch leer ist und dementsprechend auch ein Standardkonstruktor sein sollte?
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von ClaraSoft am .
private Nachricht | Beiträge des Benutzers
Jompikumpi
myCSharp.de - Member



Dabei seit:
Beiträge: 46

beantworten | zitieren | melden

Falls Standardkonstruktor hier missverstanden wird, dann nennen wir es eben parameterlosen Konstruktor.

Ändert aber eben nichts an der Situation.
private Nachricht | Beiträge des Benutzers
ClaraSoft
myCSharp.de - Member



Dabei seit:
Beiträge: 43

beantworten | zitieren | melden

Zitat von Jompikumpi
Falls Standardkonstruktor hier missverstanden wird, dann nennen wir es eben parameterlosen Konstruktor.

Ändert aber eben nichts an der Situation.

Es gibt für ToolStripControlHost, laut Doku keinen parameterlosen Konstruktor.

Das hier


base(new CheckBox())
muss gemacht werden, wenn man von ToolStripControlHost erbt.
private Nachricht | Beiträge des Benutzers