表单加载C#时无法检查DataGridView行是否被选中

时间:2016-07-05 03:41:14

标签: c# datagridview

我想在Form加载时选中或不选择DataGridView行来做一些事情但是在使用这段代码时它对我不起作用:

 private void btnEdit_Click(object sender, EventArgs e)
        {
            if (grdInvoiceDetails2.Rows.Count > 0 && grdInvoiceDetails2.SelectedRows.Count > 0)
            {
                try
                {
                    Them = false;
                    var r = grdInvoiceDetails2.CurrentCell.RowIndex;
                    txtQty.Text = grdInvoiceDetails2.Rows[r].Cells[3].Value.ToString();
                    cboInvNo.SelectedValue = grdInvoiceDetails2.Rows[r].Cells[1].Value.ToString();
                    cboItemName.SelectedValue = grdInvoiceDetails2.Rows[r].Cells[2].Value.ToString();
                    cboItemName.Enabled = true;
                    cboInvNo.Enabled = false;
                    txtQty.Enabled = true;

                    btnSave.Enabled = true;
                    btnCancel.Enabled = true;
                    btnAdd.Enabled = false;
                    btnEdit.Enabled = false;
                    btnDelete.Enabled = false;
                    btnBack.Enabled = false;
                    LoadDataToCollection();


                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.ToString());
                }
            }

        }

调试时,grdInvoiceDetails2.Rows.Count = 6,grdInvoiceDetails2.SelectedRows.Count = 1 但是如果我没有点击任何一行,它将抛出异常。因为grdInvoiceDetails2.CurrentCell = null。

1 个答案:

答案 0 :(得分:0)

Form.Load事件在第一次显示表单之前发生,所有初始化都发生在那个时间。 建议将DataGridView特定逻辑放在Load事件中(大多数控件仍可能正在初始化)。

我建议订阅DataGridView.DataBindingComplete并使用你的逻辑。

dataGridView1.DataBindingComplete += dataGridView1_DataBindingComplete;

private void dataGridView1_DataBindingComplete(object sender,
    DataGridViewBindingCompleteEventArgs e)
{
    // logic here.
}