web-dev-qa-db-ja.com

ラベルの単語の折り返し

。NET ラベルコントロールでワードラップを行う方法はありますか?

TextBox 、make property BorderStyle to none、property ReadOnlyをtrueに設定してプロパティを設定する別の方法があることを知っていますWordWrapおよびプロパティMultilineをtrueにします。

ラベル用のものはありますか?

56
Sharpeye500

ラベル内のテキストを自動的に折り返すを参照してください。成長する独自のラベルを作成する方法について説明します。

上記のリファレンスから取得した完全なソースは次のとおりです。

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();
  }
}
22
mindandmedia

最大サイズを変更し、

label1.MaximumSize = new Size(100, 0);

そして、自動サイズをtrueに設定します。

label1.AutoSize = true;

それでおしまい!

172
fa wildchild

Label AutoSizeプロパティをFalseに設定するだけです。テキストは折り返され、コントロールを手動でサイズ変更してテキストを表示できます。

38

皮肉なことに、AutoSizefalseに設定してオフにすると、ラベルコントロールの寸法を垂直と水平の両方に変更でき、効果的にワードラッピングが発生します。

17
atconway

Visual StudioでTextプロパティのドロップダウンを開くと、Enterキーを使用して行を分割できます。これは、動的テキストの最大サイズがわからない限り、明らかに静的テキストでのみ機能します。

8

Wordのラッピングラベルと共に動的なサイズ変更が必要な場合は、次の操作を実行できます。

  1. パネル内にラベルを貼る
  2. パネルのClientSizeChanged eventを処理して、スペースをラベルで埋めます:

    private void Panel2_ClientSizeChanged(object sender, EventArgs e)
    {
        label1.MaximumSize = new Size((sender as Control).ClientSize.Width - label1.Left, 10000);
    }
    
  3. ラベルのAuto-Sizetrueに設定します

  4. ラベルのDockFillに設定します
5
noelicus