Zum Inhalt springen

[C#] Schwerwiegender Fehler bei der Erstellung eines UserControls


Gateway_man

Empfohlene Beiträge

Ich wollte mir ein eigenes UserControl schreiben, welches vom Prinzip her wie ein ToolStrip aufgebaut ist.

Ich wollte es gegenwärtig nur mal testen ob er alles richtig zeichnet und da haut mir Visual Studio Fehler entgegen ohne ende.

Wenn ich es versuche über die Toolbox ins Form zu ziehen kommt der Fehler welchen ich als bild angehängt habe. (Anhang toolstrip_exception.PNG)

Wenn ich dann ins Designerfile gehe um das Element wieder rauszulöschen kommen im Sekundenintervall neue Fehlerdialoge. (Siehe Anhang toolstrip_exception2.PNG).

Die Klassen selbst sehen wie folgt aus:


using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Drawing;

using System.Windows.Forms;

using System.ComponentModel;


namespace test

{

    public class ToolStripDrawed : UserControl

    {


        List<ToolStripItemDrawed> items = new List<ToolStripItemDrawed>();

        public ToolStripDrawed() : base() {

            this.Size = new Size(150, 300);

            this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);

            this.DoubleBuffered = true;


        }

        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]

        public List<ToolStripItemDrawed> abcCollection {

            get { return items; }

            set { items = value; }

        }

        public void DrawItems() {

            //Graphics g = this.CreateGraphics();

            //g.Clear(this.BackColor);

            //int currentheight = 0;

            //for (int i = 0; i <= (items.Count - 1); i++)

            //{

            //    ToolStripItemDrawed citem = items[i];

            //    Rectangle r = new Rectangle(0, currentheight, (citem.AutoSize) ? (this.ClientRectangle.Width) : (citem.Width), (citem.AutoSize) ? (30) : (citem.Height));

            //    g.DrawRectangle(new Pen(new SolidBrush(Color.Black)), r);

            //    g.FillRectangle(new SolidBrush(citem.BackColor), r);

            //    g.DrawString(citem.Text, citem.Font, new SolidBrush(citem.ForeColor), new PointF(0, currentheight + ((citem.AutoSize) ? (15) : (citem.Height / 2))));

            //    if (citem.AutoSize)

            //        currentheight += 30;

            //    else

            //        currentheight += citem.Height;

            //}

            //g.Dispose();

        }

    }

}


using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Drawing;

using System.Windows.Forms;


namespace test

{

    //[Serializable]

    public class ToolStripItemDrawed

    {

        #region Fields

        private Font font = new Font("Arial", 9f, FontStyle.Regular, GraphicsUnit.Point);

        private bool autosize = true;

        private Size size = new Size(150, 30);

        private Point location = new Point(0, 0);

        private Brush bordercolor = new SolidBrush(Color.Black);

        private Brush backgoundcolor = new SolidBrush(SystemColors.Control);

        private Brush forecolor = new SolidBrush(Color.Black);

        #endregion

        public ToolStripItemDrawed() {


        }

        #region Properties

        public Font Font {

            get { return font; }

            set { font = value; }

        }

        public bool Autosize {

            get { return autosize; }

            set { autosize = value; }

        }

        public Size Size {

            get { return size; }

            set { if (!autosize) size = value; }

        }

        public Point Location {

            get { return location; }

            set { location = value; }

        }

        public Brush BorderColor {

            get { return bordercolor; }

            set { bordercolor = value; }

        }

        public Brush BackgroundColor {

            get { return backgoundcolor; }

            set { backgoundcolor = value; }

        }

        public Brush ForeColor {

            get { return forecolor; }

            set { forecolor = value; }

        }

        #endregion

    }

}

Diesen Lösungsvorschlag habe ich bereits ohne nenneswerte Veränderungen versucht.

Ich bin kurz davor dem Rechner was schlimmes anzutun :beagolisc .

Wenn einer von euch andere Lösungsvorschläge weiß dann wäre ich wie immmer sehr dankbar.

Wenn ich die elemente zur laufzeit generiere dann funktioniert das wunderbar, nur der Designer möchte nicht so wie ich das möchte.

lg

Gateway

post-47975-14430449050777_thumb.png

post-47975-1443044905157_thumb.png

Link zu diesem Kommentar
Auf anderen Seiten teilen

So ich bin fertig für heute, mehr halten meine Nerven nicht aus.

Ja nun gut ich hatte vorhin wohl noch Klammern vergessen (Warum ausgerechnet dabei dieser Fehler zustande kam und nicht ein Syntaxfehler weiß ich beim besten willen nicht.)

Aber das spielt jetzt eh keine Rolle mehr, da ich lauter wunderschöne Fehlermeldungen bekomme. Mein aktueller Favorit ist:

Fehler 1 Ungültige Resx-Datei. Der in der RESX-Datei verwendete System.Collections.Generic.List`1[[ToolStripItemDrawed, usctr, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089-Typ konnte nicht geladen werden. Stellen Sie sicher, dass dem Projekt die erforderlichen Verweise hinzugefügt wurden. Zeile 143, Position 5. C:\Ablage\Projekte VS(08)\ToolStriptest\usctr\Form1.resx 143 5 usctr

Wenn ich draufklicke komme ich in die resx Datei ans ende eine Base64 Strings, was natürlich alles erklärt :rolleyes:.

Nene gut ist's.Das wars für mich sonst mach ich am Ende wirklich noch was unüberlegtes.

Dabei wollte ich doch nur Rechtecke in einem UserControl zeichnen lassen.......

Danke nochmals

lg

Gateway

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...