Как я могу использовать int.TryParse в инструкции сравнения C# WPF?

У меня есть два элемента управления IntegerUpDown, и мне нужно сравнить в MouseLeave_Event , Я использовал int.Parse но когда я попробовал этот код, у меня возникло исключение:

         if (int.Parse(minUpdown.Text.ToString()) < 
   int.Parse(maxUpdown.Text.ToString()))
                    {
                      // do something
                    }

Исключение:

      Input string was not in a correct format

Я искал в Stackoverflow решение, чтобы избежать этого исключения, я увидел, что лучшее решение - использовать int.TryParse, но я не знаю, как использовать его в инструкции сравнения, которая возвращает логическое значение.

Сценарий, который следует применить, выглядит следующим образом:

  • У меня уже есть IntegerUpdown_MouseLeave_Event и код, который я опубликовал, упоминается в мероприятии, поэтому integerUpdown элементы управления могут быть пустыми или иметь значение, поэтому, если пользователь пытается ввести символ (не число), например a в и это старое значение, например 3, поэтому, когда он перемещает мышь за пределы элемента управления, IntegerUpDown должен принимать 3 вместо символа, введенного пользователем, без отображения каких-либо сообщений или исключений.

Примечание : по какой-то причине я не хотел бы использовать minUpdown.Value в этом случае, потому что значение, которое я получил при срабатывании события, является старым значением, а не значением в реальном времени.

1 ответ

Решение

Ответ на первый вопрос «Как использовать TryParse и сравнивать значения» выглядит так:

      int.TryParse(minUpdown.Text?.ToString(), out var min);
int.TryParse(maxUpdown.Text?.ToString(), out var max);

if (min < max)
{
    // do something
}

TryParse возвращает логическое значение, которое сообщает, была ли попытка успешной или нет.

Теперь, если вы хотите, чтобы ваше представление заменило неправильное значение последним правильным значением, вам необходимо сохранить его в каком-либо поле и обновить при необходимости, например:

      private int lastMinValue;
private int lastMaxValue;

private void IntegerUpdown_MouseLeave_Event(object source, EventArgs args)
{
    // use last value as a default for min and max
    int min = lastMinValue;
    int max = lastMaxValue;

    // try to update min and max
    if (int.TryParse(minUpdown.Text?.ToString(), out min))
    {
        lastMinValue = min;
    }
    if (int.TryParse(maxUpdown.Text?.ToString(), out max))
    {
        lastMaxValue = max;
    }

    if (min < max)
    {
        // do something
    }
}
Другие вопросы по тегам