using System.Windows; using System.Windows.Controls; using System.Windows.Input; namespace ComeCapture.Controls { public class KeyboardTextBox : Control { static KeyboardTextBox() { DefaultStyleKeyProperty.OverrideMetadata(typeof(KeyboardTextBox), new FrameworkPropertyMetadata(typeof(KeyboardTextBox))); } public KeyboardTextBox() { AddHandler(PreviewKeyDownEvent, new KeyEventHandler(Keyboard_KeyDown)); DataContext = AppModel.Current; } #region 键盘事件:只允许输入数字以及字母 private void Keyboard_KeyDown(object sender, KeyEventArgs e) { int key = (int)e.Key; TextBox textbox = e.OriginalSource as TextBox; //A-Z if (key >= 44 && key <= 69) { textbox.Text = e.Key.ToString(); textbox.Select(1, 0); } else if (key >= 34 && key <= 43) //0 - 9, { textbox.Text = e.Key.ToString().Substring(1); textbox.Select(1, 0); } e.Handled = true; } #endregion 键盘事件:只允许输入数字以及字母 } }