Gateway_man Geschrieben 3. August 2011 Geschrieben 3. August 2011 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 Zitieren
SilentDemise Geschrieben 3. August 2011 Geschrieben 3. August 2011 deiner Klasse fehlt das Attribut [serializable] sagt die Fehlermeldung doch ;-) Zitieren
Gateway_man Geschrieben 3. August 2011 Autor Geschrieben 3. August 2011 Hi nein das ist es nicht, ich habs nur beim aktuellen test wieder rausgenommen. Als ich es drin hatte kam selbige Meldung. lg Gateway Zitieren
SilentDemise Geschrieben 3. August 2011 Geschrieben 3. August 2011 Beide MessageBoxen sagen, deine klasse ist nicht Serializable, obwohl du sie so benutzt. Es kann also unmöglich, dieselbe Fehlermeldung kommen ;-) Zitieren
Gateway_man Geschrieben 3. August 2011 Autor Geschrieben 3. August 2011 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 . 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 Zitieren
Empfohlene Beiträge
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.