さらにブール、テキストボックス、コンボボックスなどのコンポーネントを追加してみました。コードの下部のとおりです。しかしレイアウトが悪い。ユーザーが値をすばやく簡単に更新できるように、これをきちんとした方法で表示したいと考えています。そのため、各タイプがどこに分類されるかを指定できると役立ちます。上部の列挙型、下の束のテキストボックスなど..
これを達成する方法は?フォーム デザイナーではなく、動的に。
私の小道具リストに列挙型、列挙型、ブール、ブール、テキスト、int、ブールがある場合、ユーザーコントロールの長方形を想像してください。enums on top、textboxes middle、bools のようなフレンドリーなマンガーで表示したい。等
private void updateIcons(List<Props> prop) {
countControls++;
locationY = 10;
int gbHeight;
foreach (var p in prop) {
radioButtonY = 10;
IType pType = p.Type;
if (pType is Enum) {
var myP = new MyProp(p, this);
GroupBox gb = new GroupBox();
gb.Location = new Point(nextLocationX,locationY);
nextLocationX += rbWidth+10;
gb.Name = "groupBox" + countControls;
gb.Text = "smthn";
var TypesArray = set here;
gbHeight = TypesArray.Length;
foreach (var type in TypesArray) {
getimagesPath(TypesArray);
RadioButton rb = new RadioButton();
rb.Appearance = Appearance.Button;
rb.Width = rbWidth;
rb.Height = rbHeight;
rb.Name = type.Name + countControls;
rb.Text = type.Name;
string path = imagePaths[type.Name];
Bitmap rbImage = new Bitmap(path);
rb.BackgroundImage = rbImage;
countControls++;
rb.Location = new Point(radioButtonX, radioButtonY);
if (myP.Value != null && type.Name.SafeEquals(myP.Value.ToString())) {
rb.Checked = true;
}
radioButtonY += rbHeight;
gb.Controls.Add(rb);
rb.CheckedChanged += rb_CheckedChanged;
}
gb.Height = rbHeight * gbHeight + 20;
gb.Width = rbWidth + 10;
Controls.Add(gb);
}
}
}
if(pType is string){
TextBox tb = new TextBox();
tb.Text = pType.ToString();
}