質問するログイン新規登録

回答編集履歴

3

修正

2019/10/23 07:25

投稿

Zuishin
Zuishin

スコア28675

answer CHANGED
@@ -72,7 +72,7 @@
72
72
  {
73
73
  if (!(sender is Label label)) return;
74
74
  tableLayoutPanel.Controls.Remove(label);
75
- label.Disposed();
75
+ label.Dispose();
76
76
  }
77
77
  }
78
78
  }

2

修正

2019/10/23 07:25

投稿

Zuishin
Zuishin

スコア28675

answer CHANGED
@@ -72,6 +72,7 @@
72
72
  {
73
73
  if (!(sender is Label label)) return;
74
74
  tableLayoutPanel.Controls.Remove(label);
75
+ label.Disposed();
75
76
  }
76
77
  }
77
78
  }

1

追記

2019/10/23 07:21

投稿

Zuishin
Zuishin

スコア28675

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