csharp [WPF]文字が见切れたらツールチップで全文字列表示するテキストボックス
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了csharp [WPF]文字が见切れたらツールチップで全文字列表示するテキストボックス相关的知识,希望对你有一定的参考价值。
// 参考:http://www.codeproject.com/Articles/309927/WPF-TextBox-With-Ellipsis
public class TextBoxEx : System.Windows.Controls.TextBox
{
private string _longText;
private bool _useLongTextForToolTip;
private bool _isExternalChange;
public TextBoxEx()
{
_longText = string.Empty;
_useLongTextForToolTip = true;
_isExternalChange = true;
LayoutUpdated += TextBoxEx_LayoutUpdated;
SizeChanged += TextBoxEx_SizeChanged;
}
public string LongText
{
get { return _longText; }
set
{
_longText = value ?? string.Empty;
PrepareForLayout();
}
}
public bool UseLongTextForToolTip
{
get { return _useLongTextForToolTip; }
set
{
if (_useLongTextForToolTip != value)
{
_useLongTextForToolTip = value;
if (value)
{
if (ExtentWidth > ViewportWidth || Text != _longText)
{
ToolTip = _longText;
}
}
else
{
if (_longText.Equals(ToolTip))
{
ToolTip = null;
}
}
}
}
}
protected override void OnTextChanged(TextChangedEventArgs e)
{
if (_isExternalChange)
{
_longText = Text ?? string.Empty;
if (UseLongTextForToolTip)
{
ToolTip = _longText;
}
PrepareForLayout();
base.OnTextChanged(e);
}
}
protected override void OnGotKeyboardFocus(KeyboardFocusChangedEventArgs e)
{
SetText(_longText);
base.OnGotKeyboardFocus(e);
}
protected override void OnLostKeyboardFocus(KeyboardFocusChangedEventArgs e)
{
PrepareForLayout();
base.OnLostKeyboardFocus(e);
}
void TextBoxEx_SizeChanged(object sender, System.Windows.SizeChangedEventArgs e)
{
if (Math.Abs(e.NewSize.Width - e.PreviousSize.Width) > float.Epsilon)
{
PrepareForLayout();
}
}
void TextBoxEx_LayoutUpdated(object sender, EventArgs e)
{
if (UseLongTextForToolTip)
{
if (ExtentWidth > ViewportWidth)
{
ToolTip = _longText;
}
else
{
ToolTip = null;
}
}
}
private void PrepareForLayout()
{
SetText(_longText);
}
private void SetText(string value)
{
if (Text != value)
{
_isExternalChange = false;
Text = value;
_isExternalChange = true;
}
}
}
以上是关于csharp [WPF]文字が见切れたらツールチップで全文字列表示するテキストボックス的主要内容,如果未能解决你的问题,请参考以下文章
csharp オバケはDOTween.Sequenceで不透明度変更を缲り返す。倒されたら序列を止める
csharp スタートボタンを押したら音声再生后にステージ选択シーンへ迁移する
csharp FromComponentOn()は引数のGameObjectに予めアタッチされたコンポーネントをうhttp://negi-lab.blog.jp/ZenjectInstaller
csharp FromComponentInNewPrefabメソッドは,引数の预制をインスタンス化してアタッチされたコンポーネントを注入するhttp://negi-lab.blog.jp/Zenje
javascript 以外のところをクリックされたら消す
html チェックされたら推可能になるボタン