TableLayoutPanel と Label を使うのが手軽かもしれません。
TableLayoutPanelコントロールを使って、コントロールを表形式で整列させる - .NET Tips (VB.NET,C#...)
追記
サンプルです。デザイナで作る説明をするのが面倒だったので全部コードで行っていますが、実際にはデザイナを使って作ってください。
ボタンを押すとラベルが増え、ラベルをクリックするとそのラベルは消えます。
C#
1using System;
2using System.Windows.Forms;
3
4namespace WindowsFormsApp1
5{
6 public partial class Form1 : Form
7 {
8 private TableLayoutPanel tableLayoutPanel;
9
10 public Form1()
11 {
12 InitializeComponent();
13 var clientPanel = new Panel()
14 {
15 Dock = DockStyle.Fill,
16 AutoScroll = true,
17 Parent = this,
18 };
19 tableLayoutPanel = new TableLayoutPanel()
20 {
21 Dock = DockStyle.Top,
22 AutoSize = true,
23 ColumnCount = 5,
24 RowCount = 0,
25 GrowStyle = TableLayoutPanelGrowStyle.AddRows,
26 Parent = clientPanel,
27 };
28 for (int i = 0; i < tableLayoutPanel.ColumnCount; i++)
29 {
30 tableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100 / tableLayoutPanel.ColumnCount));
31 }
32 var controlPanel = new Panel()
33 {
34 Dock = DockStyle.Top,
35 AutoSize = true,
36 Parent = this,
37 };
38 var button = new Button()
39 {
40 Text = "Click",
41 Width = 96,
42 Height = 21,
43 Parent = controlPanel
44 };
45 button.Click += Button_Click;
46 }
47
48 private int labelCount = 1;
49
50 private void Button_Click(object sender, EventArgs e)
51 {
52 var label = new Label()
53 {
54 Text = $"Label{labelCount}",
55 Parent = tableLayoutPanel,
56 };
57 label.Click += Label_Click;
58 labelCount++;
59 }
60
61 private void Label_Click(object sender, EventArgs e)
62 {
63 if (!(sender is Label label)) return;
64 tableLayoutPanel.Controls.Remove(label);
65 label.Dispose();
66 }
67 }
68}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/23 03:53
2019/10/23 03:59 編集
2019/10/23 06:00
2019/10/23 06:02
2019/10/23 06:05
2019/10/23 07:05
2019/10/23 07:07
2019/10/23 07:28 編集
2019/10/23 07:30
2019/10/23 07:36