TableLayoutPanelがあり、セルの1つにラベルを付けるたびに、左上隅にスナップします。これを行わない、またはスナップする場所を変更しないようにするにはどうすればよいですか。
また、特定のセルの背景色を変更することはできますか?
ありがとう!
TableLayoutPanelがあり、セルの1つにラベルを付けるたびに、左上隅にスナップします。これを行わない、またはスナップする場所を変更しないようにするにはどうすればよいですか。
また、特定のセルの背景色を変更することはできますか?
ありがとう!
ラベルにDockプロパティを設定することで、セル内のラベルが「スナップ」する場所を制御できます。セルの範囲内にドッキングします。セルの背景色を変更できるとは思いません。これを回避する1つの方法は、各セルにパネルを配置し、セル全体を使用してドッキングするように設定し、パネルの背景色を設定することです。
セル内のコントロールの場所を変更するには、コントロールのAnchorプロパティを使用します。
TableLayoutPanel内のセルの背景色を変更するには、コントロールのCellPaintイベントを使用して、どの列または行、あるいはその両方が描画されているかをテストし、それに応じて色を設定します。
以下は、セルの背景色を1、1から赤に設定します。
private void tableLayoutPanel1_CellPaint(object sender, TableLayoutCellPaintEventArgs e) {
if (e.Column == 1 && e.Row == 1) {
e.Graphics.FillRectangle(Brushes.Red, e.CellBounds);
}
}
@ジェイリッグスが答えを持っています。それについて少し説明するには:
私はこの問題を抱えています。.Dockでうまくいくとは思いません。私の場合、設定することで成功しました
lbl.Anchor = AnchorStyles.None; // to center the label. causes empty left space.
// OR
lbl.Anchor = AnchorStyles.Left // label sticks to left of the container and hence looks neatly aligned along with other controls.
アンカープロパティを設定することは、通常のドックよりも優れたソリューションです。marginプロパティを使用して、セル内のラベルの位置を調整することもできます。同じ行のテキストボックスと並べる必要がある場合は、ラベルの上部マージンを6程度に設定すると便利です。
セルに複数のコントロールを配置することはできないと断言できます。他の人が提案したように実行し、ラベルをパネルに追加してから、パネルをセルに追加します。フローレイアウトパネルはそのために適している可能性があります。やりすぎないでください。やりすぎると非常に面倒になります。
最初AutoSize
にlabelのプロパティをに設定しますFalse
。次にTextAlign
、必要に応じてプロパティを設定します。再び左上にまたがることはありません。
ラベルのDockおよびTextAlignプロパティを使用することにより、tablelayoutpanelの必要な場所にラベルテキストを設定できます。