Перепробовал уже очень много способов, несколько часов гуглежа.. результат ноль.
xctk:IntegerUpDown и другие updown в этой либе свободно позволяют писать текст в них кроме чисел, просто выключая кнопки UpDown;
ещё способ, он вроде бы не плохой, но позволяет вставить обычный текст на ctrl + v;
Спасибо давайте Андрею с его вариантом, в котором я доработал Pasting:
private void Pasting(object sender, DataObjectPastingEventArgs e)
{
if (e.DataObject.GetDataPresent(typeof(string)))
{
var pastedText = (string)e.DataObject.GetData(typeof(string));
DataObject dataObject = new DataObject();
dataObject.SetText(GetValidInput(pastedText));
e.DataObject = dataObject;
return;
}
e.CancelCommand();
}
private string GetValidInput(string Input)
{
return Regex.Replace(Input, @"[^0-9]", "");
}
(И ещё немного по мелочам). Это лучший из вариантов реализации TextBox с ограниченным вводом из всех, что я встречал.
Но до этого, посмотрев на этот вариант, сделал это (работает нормально, не надо заморачиваться со всякими классами, но вариант выше лучше):
private static int LastSelectionStart;
private static string LastText;
private void InputTextBox_TextChanged(object sender, TextChangedEventArgs e)
{
if (InputTextBox.Text.Length > 0)
{
if (!Int32.TryParse(InputTextBox.Text, out int Int)) //тут можно установить ограничение по макс. размеру от байт до шорт, может даже можно бигинт припилить; ещё можно просто ограничение припилить с помощью out'а у трайпарсе
{
InputTextBox.Text = LastText;
InputTextBox.SelectionStart = LastSelectionStart;
}
else LastText = InputTextBox.Text;
}
else LastText = "";
}
private void InputTextBox_SelectionChanged(object sender, RoutedEventArgs e)
{
LastSelectionStart = InputTextBox.SelectionStart;
}
Однако этот вариант, в отличие от варианта выше, как вариант Андрея с его пастингом, при вставке из буфера не фильтрует, а только проверяет текст на наличие не-цифр и в случае их присутствия не пропускает весь вставленный текст.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Задача: пользователи раз в месяц грузят данные от поставщиков в базуФайлы приходят разных размеров
В одном цикле я постоянно получаю SystemArgumentOutOfRangeException:
Возможна ли передача массива в параметр SQL? Если я хочу массово удалить, или проставить статусы списку заказов, как это сделать?
Есть класс Colum<T>, Есть класс Row со списком List<Colum>И есть проблема, List<Colum> требует указать ещё тип T аки List<Colum<int>>, но мне не нужно...