#c# #wpf
#c# #wpf
Вопрос:
Я пытаюсь сделать так, чтобы, когда пользователь вводит число ниже нуля или строку, фон текстового поля менялся на красный. Если они вводят число, большее или равное 0, текстовое поле остается того же белого цвета. Оно будет красным, пока пользователь не введет правильное целое число. Я также хочу, чтобы число сохранялось в переменной. Я написал приведенный ниже код, но это смесь кода, который я использовал в программах cmd, поэтому не уверен, как это делается в WPF.
_heightVal = 0;
private void TxtFeetInput_TextChanged(object sender, TextChangedEventArgs e)
{
_heightVal = double.Parse(txtFeetInput.Text);
if (heightVal = "")/*any string*/
{
textBox1.Background = Brushes.Red;
}
else if (_heightVal < 0)
{
textBox1.Background = Brushes.Red;
}
else
{
textBox1.Background = Brushes.White;
}
}
Комментарии:
1. Ваш код не имеет смысла. Первый оператор if выдаст синтаксическую ошибку, плюс вы уже разобрали _hieghtVal в double , поэтому он больше не может быть строкой.
2. Рекомендуемое чтение для правильного подхода MVVM / WPF: переход на следующий уровень привязки данных, проверки и MVVM — часть 1
3. @Gray_Rhino Ввод вводится в виде строки, и я хочу сделать его двойным. Позже в этом файле я возьму это число и использую его в вычислении.
4. В вашем описании упоминается целое число. Затем используйте double вместо int!
Ответ №1:
Попробуйте выполнить следующее:
double i = 0;
string s = txtFeetInput.Text;
bool result = double.TryParse(s, out i);
if(result amp;amp; i >= 0){
textBox1.Background = Brushes.White;
}else{
textBox1.Background = Brushes.Red;
}
Комментарии:
1. Я добавил код в свой файл, и поле начинается как красное, а после ввода числа оно становится белым. Я хочу, чтобы при запуске он был белым и становился красным только при вводе отрицательного числа или строки.
2. Вы должны предоставить нам дополнительную информацию об условиях по умолчанию для вашего текстового поля и при вызове вышеуказанного метода
Ответ №2:
Вы можете использовать следующее.
private void TxtFeetInput_TextChanged(object sender, TextChangedEventArgs e)
{
if (string.IsNullOrEmpty(txtFeetInput.Text))
{
textBox1.Background = Brushes.White;
return;
}
textBox1.Background = double.TryParse(txtFeetInput.Text, out var value)
amp;amp; value >= 0?
Brushes.White : Brushes.Red;
}