Попробуйте Catch, число в текстовом поле

#c# #try-catch

#c# #попытка-перехват

Вопрос:

Я создал winform, который извлекает данные из базы данных в SQL, для поиска у меня есть поля со списком — cboField и cboOperator, и я использую txtValue. Когда я ввожу (cboField), форма касается автомобилей Оплата (cboOperator) = (txtValue), если произойдет сбой. Как мне вставить что-то, чтобы помешать ему делать это и наоборот, например, Марка автомобиля = 5

     private void btnRun_Click(object sender, EventArgs e)
    {
        if (cboField.SelectedIndex == -1)
        {
            return;
        }

        if (cboOperation.SelectedIndex == -1)
        {
            return;
        }

        if (txtValue.TextLength == 0)
        {
            return;
        }

        string filter;
        filter = "["   cboField.Text   "]";

        filter  = cboOperation.Text   "'"   txtValue.Text   "'";

        tblCarBindingSource.Filter = filter;
  

Это событие щелчка для кнопки Выполнить

в нем говорится, что исключение оценки не было обработано в последней строке моего кода, который я вставил

Комментарии:

1. Не могли бы вы, пожалуйста, записать фрагменты вашего кода, чтобы прояснить свой вопрос?

2. вопрос не очень понятен. код был бы более понятным, как и подробности об исключении, возникающем при сбое

3. Вы вообще понимаете для себя, о чем вы говорите? Плюс, где именно в предоставленном коде генерируется исключение?

4. Ваш вопрос не очень понятен. Также, насколько я понимаю, в таких сценариях настоятельно рекомендуется использовать «строго типизированную» функциональность.

5. @zenwalker — Если вы прочитаете последнюю строку, вы увидите, где именно она брошена

Ответ №1:

Я думаю, вы пытаетесь запретить пользователю вводить что-то вроде «5» в ваши текстовые поля, потому что это приводит к тому, что ваш фильтр источника привязки данных выдает исключение EvaluateException?

Трудно точно сказать, что вы ищете, но если это так, попробуйте что-то вроде этого:

 try
{
    tblCarBindingSource.Filter = filter;
}
catch
{
    MessageBox.Show("Please enter valid values in your text fields.");
}
  

Комментарии:

1. Да, это верно, сейчас все работает нормально, но когда я говорю, что Payment = Ford, он говорит, что не может выполнить операцию «=» в системе. Десятичная и системная. Строка, я пытаюсь сделать ее защищенной от ошибок

2. Хорошо, если вам не нужно обрабатывать разные исключения по-разному, тогда просто удалите конкретный тип исключения. Я отредактировал код, чтобы вместо этого перехватывать все исключения.

3. Просто имейте в виду, что вам может потребоваться по-разному обрабатывать разные исключения в будущем … просто имейте это в виду. Вот почему я вставил это, это хорошая практика.