[英]Showing ellipsis in GroupBox, when text is too long?
RadioButton和CheckBox具有WrapText属性。 启用后,对于控件来说太长的文本将被换行。 禁用后,省略号会出现在末尾。
标签具有执行相同功能的AutoElipsis属性,但必须启用它才能显示省略号。
如何在GroupBox中强制相同的行为?
到这里,我为您创建了自定义控件。 使用它代替GroupBox,还可以通过设计器属性或代码来启用/禁用AutoElipsis。
public class ElipsisGroupBox : GroupBox
{
private string _tempText;
private bool _isElipsisOn;
public ElipsisGroupBox () : base()
{
_tempText = string.Empty;
_isElipsisOn = false;
}
protected override void OnResize(EventArgs e)
{
base.OnResize(e);
if (this.AutoElipsis)
{
_tempText = base.Text;
if (_tempText.Length == 0 || base.Width == 0)
return;
int i = _tempText.Length;
string textToCheck = _isElipsisOn ? _tempText : _tempText + "...";
_isElipsisOn = false;
while (TextRenderer.MeasureText(textToCheck, base.Font).Width > (base.Width - 14))
{
_isElipsisOn = true;
textToCheck = base.Text.Substring(0, --i) + "...";
if (i == 0)
break;
}
if (_isElipsisOn)
_tempText = textToCheck;
}
}
public override string Text
{
get
{
return this.AutoElipsis && _isElipsisOn ? _tempText : base.Text;
}
set
{
if (this.AutoElipsis && _isElipsisOn)
_tempText = value;
else
base.Text = value;
}
}
public bool AutoElipsis { get; set; }
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.