2022年1月17日 星期一

Winform--自動折行的Label

 原本想說Label這種元件是再普通不過的了,所以應該有自動折行的功能(至少在IOS的UIlabel有這樣的屬性,想不到在歷史悠久的winform架構居然沒有!?
(果然真的歷史悠久,以下的帖子是2006來的)

好在這鐵板已經有人踢過了參考這裡,怕雄雄找不到連結,我還是Ctl+C Ctl+V一下了

---------------------------------------------------------------------------------------------------

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

-----------------------------------------------

可是我只想用拖拉的方式來設計,不想再一一填入座標、色彩等屬性了啊

輕鬆點,只要你把這東西編譯後,tools裡就可以找出來讓你拖拖拉拉了 (記得先設定MaxSize的width)

P.S.:

之前笑人家都什麼時代了還在寫winform,

結果現在客人就有要用winform,

真的是話別說太快的好



 




沒有留言:

張貼留言