首页 > 解决方案 > 从 DataGridView 数据源错误中删除行

问题描述

我为我的删除按钮写了这些行。对我来说没有出现任何错误,但该按钮不执行任何操作,有时我会从 vb 收到此错误

在 mscorlib.dll "" 中发生了未处理的“System.FormatException”类型异常,在此行上从代码“”中进行了选择 c.patientID = Convert.ToInt32(txtBoxPatientID.Text);

知道如何让我的删除按钮工作吗?

private void btnSupprimer_Click(object sender, EventArgs e)
{
    // Get Patient ID from app
    c.patientID = Convert.ToInt32(txtBoxPatientID.Text);
    bool success = c.Delete(c);

    if (success == true)
    {
        // Successfully Deleted
        MessageBox.Show(" Operation reussite");
        // refresh data grid
        // Load data into DataGridView
        DataTable dt = c.Select();
        dgvContactList.DataSource = dt;
        // Call the clear method
        Clear();
    }
    else
    {
        // failed to delete
        MessageBox.Show(" Operation echouée");
    }
}

标签: c#winformsdatagridviewdatatable

解决方案


该异常意味着您正在尝试将非数字或空字符串转换为 Int32。我相信问题出在这里:

c.patientID = Convert.ToInt32(txtBoxPatientID.Text);

换句话说,当您单击该按钮并且 txtBoxPatientID 不包含任何内容或任何带或不带数字的字符时,您将获得上述异常。

尝试解析文本框的内容以检查输入的格式是否正确是个好主意。如果是,则继续,例如显示验证消息。

尝试:

int i;

if(!int.TryParse(txtBoxPatientID.Text, out i))
{
    return; //or message the user to enter a valid input.
}
// Get Patient ID from app
c.patientID = i;
bool success = c.Delete(c);
if (success == true)
{
    // Successfully Deleted
    MessageBox.Show(" Operation reussite");
    // refresh data grid
    //Load Data on Data GridView
    DataTable dt = c.Select();
    dgvContactList.DataSource = dt;
    // Call the clear method
    Clear();
}
else
{
    // failed to deleted
    MessageBox.Show(" Operation echouée");
}

推荐阅读