创建只接受数字的WPF文本框
这个问题在这里已经有了答案:
到目前为止,我所见过的大多数实现都是使用PreviewTextInput事件来实现正确的掩码行为。 这个从TextBox继承,这个使用附加的属性。 两者都使用.Net的MaskedTextProvider提供正确的遮罩行为,但如果您只想要一个简单的“仅限数字”文本框,则不需要此类。
private void txt_TextChanged(object sender, TextChangedEventArgs e)
{
TextBox textBox = sender as TextBox;
int iValue = -1;
if (Int32.TryParse(textBox.Text, out iValue) == false)
{
TextChange textChange = e.Changes.ElementAt<TextChange>(0);
int iAddedLength = textChange.AddedLength;
int iOffset = textChange.Offset;
textBox.Text = textBox.Text.Remove(iOffset, iAddedLength);
}
}
在我看来,满足这一要求的最好方法是仅使用OnTextChanged
事件,因为它可以处理按键的数字,并且也能够处理从剪贴板复制+粘贴。 我希望我的VB代码如下所示可以让我们对此有所了解。
Private Sub NumericBox_TextChanged(sender As Object, e As TextChangedEventArgs) Handles Me.TextChanged
Dim Buffer As New StringBuilder
Dim Index As Integer = Me.SelectionStart
For Each C In Me.Text
If Char.IsDigit(C) Then
Buffer.Append(C)
ElseIf Me.SelectionStart > Buffer.Length Then
Index -= 1
End If
Next
Me.Text = Buffer.ToString
Me.SelectionStart = Index
End Sub
链接地址: http://www.djcxy.com/p/95961.html