TableLayoutPanel
すべての行のデフォルトの高さをC#で16pxに設定するにはどうすればよいですか?TableLayoutPanelの行のデフォルトの高さを設定する
通常、私はどうなる:
for (int i = 0; i < amount_of_rows; i++)
{
panel.RowStyles.Add(new RowStyle(SizeType.Absolute, 16));
}
しかし、私の場合は私が8列と行の未知の量を持っています。行の量は、すべてのコントロールが追加された後ではなく、以前には追加されていません。
これは私のコードです:
TableLayoutPanel panel = new TableLayoutPanel
{
BackColor = SystemColors.Control,
CellBorderStyle = TableLayoutPanelCellBorderStyle.Single,
AutoScroll = true,
Width = 500,
Location = new Point(-1, -1),
ColumnCount = 8
};
panel.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 16));
panel.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 73));
panel.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 16));
panel.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 73));
panel.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 38));
panel.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 38));
panel.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 52));
panel.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 52));
int amountOfRows = 0;
for (...)
{
// a lot of code which populates panel with generated controls and counts amountOfRows
}
panel.RowCount = amountOfRows;
Controls.Add(panel);
ようなコードは、24ピクセルの高さで行を作成します。
それは次のように移入された後、テーブルにColumnStylesを追加:
for (int i = 0; i < amountOfRows ; i++)
{
panel.RowStyles.Add(new RowStyle(SizeType.Absolute, 16));
}
は動作しますが、それは最後の行が非常に大きくなります。
EDIT:コントロールの追加を含むサンプルコード:
TableLayoutPanel panel = new TableLayoutPanel
{
BackColor = SystemColors.Control,
CellBorderStyle = TableLayoutPanelCellBorderStyle.Single,
AutoScroll = true,
Width = 500,
Location = new Point(-1, -1),
ColumnCount = 8,
Margin = new Padding(0),
Padding = new Padding(0)
};
panel.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 16));
panel.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 73));
panel.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 16));
panel.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 73));
panel.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 38));
panel.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 38));
panel.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 52));
panel.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 52));
for (int i = 0; i < 10; i++) // lets assume we don't know it will be added 10x
{
CheckBox exchangeEnabled = new CheckBox
{
Margin = new Padding(0),
Padding = new Padding(0),
Dock = DockStyle.Fill,
CheckAlign = ContentAlignment.MiddleCenter
};
panel.Controls.Add(exchangeEnabled, 0, i);
}
Controls.Add(panel);
ありがとうございますが、何も変わりません。私はMargin =新しいPadding(0)、Padding =新しいPadding(0)をTableLayoutPanelとそのコントロールに追加しました。私はコントロールを追加することを含むサンプルコードを追加しました。それとも、私はあなたを完全に理解していないのですか? – LukAss741
うーん、いいえ、あなたは私の権利を得た。大きいパディング/マージンを設定するときに影響を見ることができますか? - 最大値は何ですか?ハイツ?デフォルトでは、CheckBoxは自動サイズ調整をオンにしているので、高さはFontsizeに依存します。 – TaW
高さ= 16に設定されたすべてのコントロールを設定します。マージンとパディングが0であっても、何らかの理由で周囲にスペースが追加されます。正確な高さを指定した後で動作します。私に正しい方向を指摘してくれてありがとう。 – LukAss741