我正在制作一个数据库,我生成了一个单元格点击事件,如果用户点击单元格,它的数据就会显示在文本框中,所以以后如果需要,我可以更新数据。
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。是否有某种代码可以做到这一点?我删除了数据库中的所有行,但主键没有被重置。谢谢你花时间来阅读这个。任何帮助将是巨大的。)
最好使用Bindings和IsSynchronizedWithCurrentItem="True"。这里有一个很好的例子 https:/docs.microsoft.comde-dedotnetapisystem.windows.controls.primitives.selector.issynchronizedwithcurrentitem?view=netcore-3.1。
您发布的数据块实际上只能在两种情况下给出 IndexOutOfBounds。
.Rows[0]
崩溃.Cells[x]
崩溃,因为x等于datagridview中的列数。"崩溃 "和 "抛出异常 "的意思是一样的。捕捉到一个异常并不意味着代码没有抛出异常