C# 尝试在文本字段中输入Catch、number

C# 尝试在文本字段中输入Catch、number,c#,try-catch,C#,Try Catch,我制作了一个winform,用SQL从数据库中提取数据,为了搜索,我有组合框——cboField和cboOperator,我使用的是txtValue。表格是关于汽车的,当我输入(cboField)付款(cboOperator)=(txtValue)福特时,它崩溃了。我该如何加入一些东西来阻止它这样做,或者反过来做,例如汽车品牌=5 private void btnRun_Click(object sender, EventArgs e) { if (cboFiel

我制作了一个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;
这是运行按钮的单击事件


它说在我粘贴的代码的最后一行未处理求值异常

我想您是在试图阻止用户在文本字段中放置类似“5”的内容,因为这会导致数据绑定源过滤器抛出一个EvaluateException

很难说清楚你要找的是什么,但如果是这样的话,请尝试以下方法:

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

你能写下你的代码片段来澄清你的问题吗?这个问题不是很清楚。代码会更清晰,关于崩溃时发生的异常的详细信息也会更清晰。你自己对你所说的有意义吗?另外,在所提供的代码中,异常是在哪里引发的?您的问题不是很清楚。据我所知,在这种情况下,强烈建议使用“强类型”功能。@zenwalker-如果您阅读最后一行,您将看到它的确切位置是正确的,它现在工作正常,但当我说Payment=Ford时,它表示无法对System.Decimal和System.String执行“=”运算,我正在努力使它能够防止bug好的,如果您不需要以不同的方式处理不同的异常,那么只需删除特定的异常类型。我编辑了代码以捕获所有异常。请注意,您可能希望以不同的方式处理不同的异常…请记住这一点。这就是为什么我把它放进去,这是一个很好的练习。