Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[C#] Schwerwiegender Fehler bei der Erstellung eines UserControls

Empfohlene Antworten

Veröffentlicht

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

  • Autor

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.