Вы можете сделать резервную копию вашего текста перед любым ручным вводом, а затем, если введенный ввод недействителен, восстановить предыдущий текст следующим образом:
_backupText = string.Empty;
doNotPasteTextBox.TextInputStart += (sender, e) =>
{
int textParsed;
if(int.TryParse(e.Text,out textParsed))
{
_backupText = doNotPasteTextBox.Text.Insert(doNotPasteTextBox.SelectionStart, e.Text);
}else
{
e.Handled = true;
}
};
doNotPasteTextBox.TextChanged += (sender, e) =>
{
int textParsed;
int selectionStart = doNotPasteTextBox.SelectionStart;
if(!int.TryParse(doNotPasteTextBox.Text, out textParsed))
{
doNotPasteTextBox.Text = _backupText;
}
doNotPasteTextBox.SelectionStart = selectionStart;
};
Я бы не рекомендовал пытаться захватитьуправляющие клавиши или что-нибудь еще, потому что когда вы работаете на Mac или Linux, вы ввернуты.
Отрегулируйте мой образец и добавьте его в новый текстовый элемент управления, чтобы сделать его чище, но вы поняли.