既然Label无法提供WordWrap或AutoSize这样的属性,自己写起来算法是一个问题,而且还不定能考虑到所有的情况,那就换种思维方式,改用TextBox,就这样得到了下面的代码():
public partial class WrapedLabel : TextBox
{
public WrapedLabel()
{
InitializeComponent();
}
}
partial class WrapedLabel
{
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region 组件设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要
/// 使用代码编辑器修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
components = new System.ComponentModel.Container();
this.ReadOnly = true;
this.BackColor = System.Drawing.SystemColors.Control;
this.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.Multiline = true;
this.WordWrap = true;
}
#endregion
}