Laden...

ToolStripControlHost Kontruktor Problem

Erstellt von AmpelB vor 2 Jahren Letzter Beitrag vor 2 Jahren 367 Views
A
AmpelB Themenstarter:in
41 Beiträge seit 2021
vor 2 Jahren
ToolStripControlHost Kontruktor Problem

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 > Fehlermeldung:

"Um mögliche Datenverluste zu verhindern, müssen vor dem Laden des Designers folgende Fehler behoben werden:"

. Als Fehler wird angezeigt > Fehlermeldung:

"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

J
61 Beiträge seit 2020
vor 2 Jahren

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

C
55 Beiträge seit 2020
vor 2 Jahren

Der Winforms Designer benutzt ausschließlich Standardkonstruktoren.

Du benutzt

  
base(new CheckBox())  
  

und dies ist kein Standardkonstruktor.

Siehe auch:
>

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?

J
61 Beiträge seit 2020
vor 2 Jahren

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

Ändert aber eben nichts an der Situation.

C
55 Beiträge seit 2020
vor 2 Jahren

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.