TextBoxのラベルとする用途ならば、PlaceholderTextで代用できる可能性があります。
| 型 | プロパティ | 内容 | 既定値 |
|---|---|---|---|
| bool | AutoSize | trueならば、全体の内容が表示されるように大きさが自動調整される
幅が不足するならば高さが拡大され、改行して表示される |
false (デザイナーで追加するとtrue) |
| bool | AutoEllipsis | trueならば、省略記号によって追加のテキストがあることを示す
AutoSizeがtrueのときは省略されないようにLabelが拡大されるため、省略記号は表示されない |
false |
| string | Text | コントロールに関連付けられたテキスト。nullを設定すると、空文字列に置き換えられて設定される | |
| ContentAlignment | TextAlign | テキストの配置方法を指定する | TopLeft |
| ImageList | ImageList | 表示するイメージを保持するImageList | null |
| int | ImageIndex | ImageListの中から使用するイメージのインデックス。範囲外の値を設定すると、無視される | -1 |
| string | ImageKey | ImageListの中から使用するイメージのキー | "" |
| Image | Image | 表示するイメージ
ImageListが設定されているならば、これから取得するとImageIndexで指定されているImageが返される Image - Label.cs これを設定すると、ImageListとImageIndexは既定値に設定される |
null |
| ContentAlignment | ImageAlign | イメージの配置方法 | MiddleCenter |
Fontを変更するとコントロールのサイズが変更され、隣接するコントロールに重なって表示されることがあります。よってLabelが背面に表示されるようにZオーダーが大きくなるように親コントロールに追加するか、Fontが変更されたときに隣接するコントロールの位置を調整します。
Labelがコンテナの大きさを超える可能性があるならば、これをfalseとしてAnchorなどでサイズを調整させ、AutoEllipsisをtrueとして省略されていることがわかるようにします。
これをfalseとすると、Sizeの大きさによってはテキストが改行して表示されることがあります。これをつねに1行で表示するにはOnPaint()をオーバーライドして、TextFormatFlags.WordBreakを指定しないでテキストを描画します。ただしそのときbase.OnPaint()を呼ばないとテキストが省略されたときにツールチップが表示されなくなるため、必要ならばinternalなフィールドであるshowToolTipを設定します。
bool showToolTip;
if (AutoEllipsis)
{
Size size = ClientSize;
Size preferredSize = GetPreferredSize(size);
showToolTip = (size.Width < preferredSize.Width || size.Height < preferredSize.Height);
}
else
{
showToolTip = false;
}
typeof(Label).GetField("showToolTip", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(this, showToolTip);
OnPaint - label.onpaint
AutoSizeがtrueのときはテキストとLabelの大きさが一致しているため、意味をなしません。
CheckBoxなどはこのプロパティの既定値がMiddleLeftとなっており、既定では垂直方向の位置が合いません。
テキストの表示領域の幅が不足すると改行され、指定とは異なる位置に表示されているように見えることがあります。
既定はtrueで、「&」に続く文字がアクセスキー (access key) として機能します。その状態でそのアクセスキーを押すと、Labelのタブ オーダー (tab order) の順が次のコントロールにフォーカスが設定されます。Remarks - Label.UseMnemonic Property (System.Windows.Forms) | MSDN