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

回答編集履歴

1

より詳しく書いた

2016/10/28 14:37

投稿

MagoCat
MagoCat

スコア86

answer CHANGED
@@ -28,4 +28,39 @@
28
28
 
29
29
  これをビルドして実行すると、フォームサイズを変えてもButtonがフォームの真ん中に常に張り付く様子が観察されます。
30
30
 
31
- TableLayoutPanel.Controls.Addメソッドには行インデックスと列インデックスを受け付けるオーバーロードがあるので、それを使えばコード上からでもButtonを右下のセルに入れることが可能です。
31
+ TableLayoutPanel.Controls.Addメソッドには行インデックスと列インデックスを受け付けるオーバーロードがあるので、それを使えばコード上からでもButtonを右下のセルに入れることが可能です。
32
+
33
+  
34
+  
35
+  
36
+
37
+ #TableLayoutPanelはどうでしょう?(2)
38
+
39
+ 先程のやり方はボタンの原点がパネルの中心と一致していましたが、そうではなくボタンの中心とパネルの中心を一致させたいのであれば、もうひと工夫が必要です。
40
+
41
+ まずTableLayoutのColumnsプロパティとRowsプロパティを使って、3×3分割のTableLayoutPanelを用意します。
42
+
43
+ ![イメージ説明](b96c356bd12591e3743ae40efa569932.png)
44
+
45
+
46
+ 真ん中のセルにButtonを設置します。
47
+
48
+ ![イメージ説明](370592a0c0ba108e1d49380c548f6591.png)
49
+
50
+
51
+ TableLayoutPanelのColumnsプロパティの編集画面を開きます。
52
+
53
+ ![イメージ説明](ea9e28ce2856d453d06c1e80247c51d0.png)
54
+
55
+
56
+ 真ん中のColumnのサイズの型を自動調整, 残りのColumnは50%に設定します。
57
+ すると真ん中のセルの横サイズが自動調整された結果ボタンのx中心とTableLayoutPanelのx中心が一致するようになります。
58
+
59
+ ![イメージ説明](a947dd84a535373f57e972421b3645e8.png)
60
+
61
+ Rowsについても同様に真ん中のRowサイズの型を自動調整にすることで、ボタンのy中心とTableLayoutPanelのy中心が一致するようになります。
62
+
63
+ ![イメージ説明](d46a91192f47b199a69f8f02a2c03949.png)
64
+
65
+
66
+ これをビルドして実行すると、フォームのサイズを変えてもボタンが常に真ん中を陣取る様子が観察されます。