Hallo zusammen,
ich hoffte durch meine Anmeldung ein für mich aktuell nicht lösbares Problem erklärt und beseitigt zu bekommen.
Ich versuche ein eigenes Steuerelement zu entwerfen, stoße aber auf Probleme bei der Entwurfszeit, wenn ich das Steuerelement in ein Projekt einbinde.
Zunächst die Fehlermeldung:
"Fehler bei der Codegenerierung für die Bildelemente-Eigenschaft. Der Typ "System.Windwos.Forms.Panel" in Assembly "System.Windows.Forms" ist nicht als serialisierbar gekennzeichnet".
So sieht die Klasse des Navigationselementes aus:
Ich habe schon versucht, einige Dinge zu lesen und [Serializable] vor die Klasse zu schreiben, irgendwelche [hidden]-Tags zu setzen, aber für mich ist das an dieser Stelle nur Raterei, da ich nicht erfahren genug bin, um zu wissen, WAS ich da tue. Daher hoffe ich nicht nur auf eine Lösung, sondern auch auf eine Erklärung, die mich weiterbringt.
Vielen Dank im Voraus,
Oliver
ich hoffte durch meine Anmeldung ein für mich aktuell nicht lösbares Problem erklärt und beseitigt zu bekommen.
Ich versuche ein eigenes Steuerelement zu entwerfen, stoße aber auf Probleme bei der Entwurfszeit, wenn ich das Steuerelement in ein Projekt einbinde.
Zunächst die Fehlermeldung:
"Fehler bei der Codegenerierung für die Bildelemente-Eigenschaft. Der Typ "System.Windwos.Forms.Panel" in Assembly "System.Windows.Forms" ist nicht als serialisierbar gekennzeichnet".
So sieht die Klasse des Navigationselementes aus:
Code:
[Designer("System.Windows.Forms.Design.ParentControlDesigner, System.Design", typeof(IDesigner))] public partial class Navigationskreis : UserControl { private Point[] punkte = { new Point(113,0), new Point(203,26), new Point(230,114), new Point(203,208), new Point(113,230), new Point(21,208), new Point(0,114), new Point(21,26) }; public int anzahlElemente = 8; public PictureBox Hauptbild; private List<Panel> bildelemente = new List<Panel>(); public List<Panel> Bildelemente { get { return bildelemente; } set { this.bildelemente = value; } } private List<Panel> inhaltselemente = new List<Panel>(); private List<Panel> Inhaltselemente { get { return inhaltselemente; } set { inhaltselemente = value; } } public Navigationskreis() { InitializeComponent(); Hauptinhalt.Controls.Add(Hauptknopf); Hauptknopf.Left = 0; Hauptknopf.Top = 0; Hauptinhalt.SendToBack(); Tooltip.Visible = false; for (int i=0; i<anzahlElemente; i++) { Panel pb = new Panel(); pb.BackColor = Color.Transparent; pb.Parent = Hauptknopf; pb.BackgroundImage = XiveCC.Properties.Resources.Animalokinese; pb.BackgroundImageLayout = ImageLayout.Stretch; pb.Width = 70; pb.Height = 70; pb.Left = punkte[i].X; pb.Top = punkte[i].Y; pb.Name = "AUSW" + i; pb.Visible = false; bildelemente.Add(pb); Panel ip = new Panel(); ip.BackColor = Color.Transparent; ip.Visible = true; ip.Parent = Hauptknopf; ip.BackgroundImage = XiveCC.Properties.Resources.KnopfLeer; ip.BackgroundImageLayout = ImageLayout.Stretch; ip.Width = 70; ip.Height = 70; ip.Left = 0; ip.MouseClick += Angeklickt; ip.Top = 0; bildelemente[i].Controls.Add(ip); ip.Name = "INHA" + i; inhaltselemente.Add(ip); } Invalidate(); } private void Angeklickt(object sender, EventArgs e) { Panel x = (Panel)sender; int nummer = Int32.Parse(x.Name.Substring(4)); Hauptinhalt.BackgroundImage = bildelemente[nummer].BackgroundImage; for (int i = 0; i < anzahlElemente; i++) { bildelemente[i].Visible = false; } } private void Hauptknopf_DragEnter(object sender, DragEventArgs e) { e.Effect = DragDropEffects.Move; } private void Hauptknopf_MouseClick(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { for (int i = 0; i < anzahlElemente; i++) { bildelemente[i].Visible = true; } } if (e.Button == MouseButtons.Right) { Tooltip.Visible = true; } } private void Tooltip_MouseClick(object sender, MouseEventArgs e) { Tooltip.Visible = false; } }
Vielen Dank im Voraus,
Oliver
Comment