Ich erstelle ein benutzerdefiniertes Steuerelement, das Optionsfelder ausgibt (Nein, es müssen keine Optionsfelder sein. Ich versuche nur zu lernen, wie ich das mache.) kann einige komplexere Dinge auf den Weg bringen, die mehrere Listen von Steuerelementen enthalten können), die über die Items-Eigenschaft hinzugefügt werden (ähnlich wie einige andere Steuerelemente).Benutzerdefiniertes Steuerelement wird in Visual Studio Designer nicht aktualisiert
Ich kann das Projekt erstellen, ziehen Sie dieses auf ein Formular aus dem Komponentenbereich und fügen Radio Optionsfelder über die Items-Eigenschaft hinzu. Leider ist dies nicht in Designer aktualisiert, wenn Sie entweder:
- das Projekt neu 2-3mal
- und schließen Sie das Formular in Designer
wieder öffnen Zuerst hatte ich die Logik, die diese aufsetzt das Formular, das nach dem Initialisieren im Konstruktor enthalten war, aber nicht funktionierte, weshalb ich zu Form_Load wechselte.
Was fehlt mir? Die oben genannten Optionen sind nur kurzfristige Umgehungslösungen, keine Lösungen.
RBLTest.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WFCL_Library
{
public partial class RBLTest : UserControl
{
private List<RadioButton> _items;
private int leftSpacing = 100;
private int topSpacing = 25;
public RBLTest()
{
_items = new List<RadioButton>();
InitializeComponent();
}
private void RadioButtonList_Load(object sender, EventArgs e)
{
int curLeftPos = 0;
int curTopPos = 0;
foreach (RadioButton rb in _items)
{
rb.Location = new Point(curLeftPos, curTopPos);
rb.Size = new Size(85, 17);
curLeftPos += leftSpacing;
if (curLeftPos > this.Width)
{
curLeftPos = 0;
curTopPos += topSpacing;
}
this.Controls.Add(rb);
}
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public List<RadioButton> Items
{
get
{
return _items;
}
set
{
_items = value;
}
}
}
}
RBLTest.Designer.cs
namespace WFCL_Library
{
partial class RBLTest
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Component Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.SuspendLayout();
//
// RBLTest
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Name = "RBLTest";
this.Size = new System.Drawing.Size(407, 44);
this.Load += new System.EventHandler(this.RadioButtonList_Load);
this.ResumeLayout(false);
}
#endregion
}
}
Ohhhhhhhhhhhh Ich will dir nur Recht umarmen jetzt habe ich so lange damit verbracht, damit zu spielen, ohne etwas Glück zu diesem Thema mit meinen armen Google-Suchen zu finden. Haben Sie zufällig einen Verweis auf einen Artikel, in dem die Probleme bei der Serialisierung generischer Listen im Designer diskutiert werden? – Mohgeroth
Haha :) Ich bin froh, Ihnen zu helfen! –
@Mohgeroth Sie benötigen keine weitere Sammlung, Sie haben bereits eine in der Controls-Sammlung, in der Ihre Kindersteuerelemente sowieso leben müssen. – Tergiver