基于C# CRUD的应用程序。更新错误以及如何重置主键ID?

问题描述 投票:0回答:1

我正在制作一个数据库,我生成了一个单元格点击事件,如果用户点击单元格,它的数据就会显示在文本框中,所以以后如果需要,我可以更新数据。

 private void PrisonerRecordDATAGRIDVIEW2_CellClick(object sender, DataGridViewCellEventArgs e)
    {
        try
        {
            prisoner_id = Convert.ToInt32(PrisonerRecordDATAGRIDVIEW2.Rows[0].Cells[0].Value);
            txtbox_fn.Text = PrisonerRecordDATAGRIDVIEW2.SelectedRows[0].Cells[1].Value.ToString();
            textBox_age.Text = PrisonerRecordDATAGRIDVIEW2.SelectedRows[0].Cells[2].Value.ToString();
            textBox_crime.Text = PrisonerRecordDATAGRIDVIEW2.SelectedRows[0].Cells[3].Value.ToString();
            textBox_punish.Text = PrisonerRecordDATAGRIDVIEW2.SelectedRows[0].Cells[4].Value.ToString();
            txtbox_lockup.Text = PrisonerRecordDATAGRIDVIEW2.SelectedRows[0].Cells[5].Value.ToString();
            textBox_yearfrom.Text = PrisonerRecordDATAGRIDVIEW2.SelectedRows[0].Cells[6].Value.ToString();
            textBox_yearto.Text = PrisonerRecordDATAGRIDVIEW2.SelectedRows[0].Cells[7].Value.ToString();
            txtbox_status.Text = PrisonerRecordDATAGRIDVIEW2.SelectedRows[0].Cells[8].Value.ToString();

        }
        catch (Exception f)
        {
            MessageBox.Show(f.Message,"Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
        }
    }

每次我点击单元格时,它都会抛出异常,就像这样。

指数超出范围。必须为非负值,且小于集合的大小。参数名称:索引

另外我想知道如何重置主键Id。是否有某种代码可以做到这一点?我删除了数据库中的所有行,但主键没有被重置。谢谢你花时间来阅读这个。任何帮助将是巨大的。)

c# database exception crud desktop-application
1个回答
0
投票

最好使用Bindings和IsSynchronizedWithCurrentItem="True"。这里有一个很好的例子 https:/docs.microsoft.comde-dedotnetapisystem.windows.controls.primitives.selector.issynchronizedwithcurrentitem?view=netcore-3.1。


0
投票

您发布的数据块实际上只能在两种情况下给出 IndexOutOfBounds。

  • 数据网格视图中没有行,这意味着 .Rows[0] 崩溃
  • 在datagridview中没有至少9列,这意味着其中的一列是 .Cells[x] 崩溃,因为x等于datagridview中的列数。

"崩溃 "和 "抛出异常 "的意思是一样的。捕捉到一个异常并不意味着代码没有抛出异常

© www.soinside.com 2019 - 2024. All rights reserved.