Что вы хотите сделать, когда пользователь пытается ввести нечисловое значение? Имеет ли это значение до попытки отправки данных? Не вводя свой блок кода каждый раз, когда нажимается клавиша, я думаю, что было бы лучше просто позволить пользователю вводить нечисловые значения и проверять либо при отправке формы и / или когда текстовое поле теряет фокус. Затем, если проверка не пройдена, уведомите пользователя о строгом числовом формате. Это будет менее инвазивным для пользователя, чем прерывание.
Что касается проверки, просто используйте регулярные выражения или попробуйте проанализировать текст текстового поля как целое число.
Регулярное выражение
System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), @"^\d$");
Integer Parse
int validNumbers = 0;
bool isValid = int.TryParse(myTextBox.Text, out validNumbers);