WPF
의 경우 TextBox의 "MaxLength"속성을 사용하십시오.
텍스트를 붙여 넣을 때 설정된 문자 수로 제한되지만 줄 바꿈 (CR LF - 2 자)도 포함된다는 점에 유의하십시오. 텍스트의 중간에 붙여 넣으면 붙여 넣은 내용이 MaxLength까지 남은 문자 수로 제한됩니다. 세트
MaxWidth
을 갖는
TextBox
과 WPF의 권취기구에 기초하여 텍스트를 트리밍 - OP는이 폭이 아니라 길이 관한 언급 때문에
,이 경로를 고려하는 것이다.
private void this_TextChanged(object sender, TextChangedEventArgs e)
{
if (sender is TextBox)
{
var textb = sender as TextBox;
if (textb.LineCount > 1)
{
foreach (var change in e.Changes.Where(x=>x.RemovedLength == 0))
{
for (int index = change.AddedLength; index > 0; index--)
{
textb.Text = textb.Text.Remove(change.Offset, 1);
textb.UpdateLayout();
if (textb.LineCount == 1)
break;
}
if (textb.LineCount == 1)
break;
}
}
}
}
그리고 이것은 대략적인 예입니다
<TextBox TextChanged="this_TextChanged" MaxWidth="200" Text="{Binding TextValue}" TextWrapping="Wrap"/>
같은 텍스트 상자에 대한 .xaml - 당신은 이미 기존 텍스트의 일부를 선택하면, 그러나 그것은 작동하지 않습니다 붙여 넣은 텍스트가 잘 작동 트리밍 및 붙여 넣기 텍스트로 교체하려고 - 문제는 한 번 더 발사의 TextChanged 내의 텍스트, 업데이트에서 온다 -를 빼고 같은 방법으로 붙여 넣기 :
e.Changes.Where(x=>x.RemovedLength == 0)
를 앞의 텍스트가 대신 TextBox를 다듬어야합니다.
'WPF'의 경우'TextBox' [MSDN 문서] (https://msdn.microsoft.com/en-us/library/system.windows.controls.textblock.texttrimming()에서'TextTrimming' 속성을 사용합니다) v = .110) .aspx). 그러나 어떤 코드도없이 우리는 추측 만 할 수 있습니다. – XAMlMAX