。NET ラベルコントロールでワードラップを行う方法はありますか?
TextBox 、make property BorderStyle to none、property ReadOnlyをtrueに設定してプロパティを設定する別の方法があることを知っていますWordWrapおよびプロパティMultilineをtrueにします。
ラベル用のものはありますか?
ラベル内のテキストを自動的に折り返すを参照してください。成長する独自のラベルを作成する方法について説明します。
上記のリファレンスから取得した完全なソースは次のとおりです。
using System;
using System.Text;
using System.Drawing;
using System.Windows.Forms;
public class GrowLabel : Label {
private bool mGrowing;
public GrowLabel() {
this.AutoSize = false;
}
private void resizeLabel() {
if (mGrowing) return;
try {
mGrowing = true;
Size sz = new Size(this.Width, Int32.MaxValue);
sz = TextRenderer.MeasureText(this.Text, this.Font, sz, TextFormatFlags.WordBreak);
this.Height = sz.Height;
}
finally {
mGrowing = false;
}
}
protected override void OnTextChanged(EventArgs e) {
base.OnTextChanged(e);
resizeLabel();
}
protected override void OnFontChanged(EventArgs e) {
base.OnFontChanged(e);
resizeLabel();
}
protected override void OnSizeChanged(EventArgs e) {
base.OnSizeChanged(e);
resizeLabel();
}
}
最大サイズを変更し、
label1.MaximumSize = new Size(100, 0);
そして、自動サイズをtrueに設定します。
label1.AutoSize = true;
それでおしまい!
Label AutoSizeプロパティをFalseに設定するだけです。テキストは折り返され、コントロールを手動でサイズ変更してテキストを表示できます。
皮肉なことに、AutoSize
をfalse
に設定してオフにすると、ラベルコントロールの寸法を垂直と水平の両方に変更でき、効果的にワードラッピングが発生します。
Visual StudioでText
プロパティのドロップダウンを開くと、Enterキーを使用して行を分割できます。これは、動的テキストの最大サイズがわからない限り、明らかに静的テキストでのみ機能します。
Wordのラッピングラベルと共に動的なサイズ変更が必要な場合は、次の操作を実行できます。
パネルのClientSizeChanged event
を処理して、スペースをラベルで埋めます:
private void Panel2_ClientSizeChanged(object sender, EventArgs e)
{
label1.MaximumSize = new Size((sender as Control).ClientSize.Width - label1.Left, 10000);
}
ラベルのAuto-Size
をtrue
に設定します
Dock
をFill
に設定します