public class CustomTextBoxl:TextBox
{
public CustomTextBox()
{
PreviewTextInput += TextBoxControl_PreviewTextInput;
DataObject.AddPastingHandler(this, Pasting_Text);
}
//限制非法字符输入,只允许输入数字和小数点
private void TextBoxControl_PreviewTextInput(object sender,
TextCompositionEventArgs e)
{
var textBox = sender as TextBox;
//这是对中文值的判断
if(textBox==null)return;
//if (Regex.IsMatch(textBox.Text, @"[\u4e00-\u9fbb]+$"))
//{
// textBox.Text = "";
// e.Handled = true;
// return;
//}
//匹配只能输入一个小数点的浮点数
Regex numbeRegex = new Regex("^[.][0-9]+$|^[0-9]*[.]{0,1}[0-9]*$");
e.Handled =
!numbeRegex.IsMatch(
textBox.Text.Insert(
textBox.SelectionStart, e.Text));
textBox.Text = textBox.Text.Trim();
}
/// <summary>
/// 键盘输入值事件(可以小键盘上的数字键和英文输入状态下的句点键盘)
/// </summary>
/// <param name="e"></param>
protected override void OnPreviewKeyDown(KeyEventArgs e)
{
if ((e.Key >= Key.NumPad0 && e.Key <= Key.NumPad9 &&
e.KeyboardDevice.Modifiers != ModifierKeys.Shift)
||
(e.Key >= Key.D0 && e.Key <= Key.D9 &&
e.KeyboardDevice.Modifiers != ModifierKeys.Shift) ||
e.Key == Key.Back || e.Key == Key.Left || e.Key == Key.Right ||
e.Key == Key.Enter || e.Key == Key.Decimal ||
e.Key == Key.OemPeriod)
{
if (e.KeyboardDevice.Modifiers != ModifierKeys.None)
{
e.Handled = false;
}
}
else
{
e.Handled = true;
}
}
/// <summary>
/// 禁止粘贴
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void v_Text_(object sender, DataObjectPastingEventArgs e)
{
e.CancelCommand();
}
}