2016-07-05 19 views
1

我要檢查的DataGridView行選擇或沒有時,窗體加載做一些東西,但使用此代碼時,它並沒有爲我工作:無法檢查的DataGridView行選擇或沒有時,窗體加載C#

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。

+0

您必須檢查(grdInvoiceDetails2.SelectedRows.Count> 0),那麼你可以調用grdInvoiceDetails2.CurrentCell,否則,你看空,結果是例外。在Form_Load期間,沒有SelectedRows。只有當您點擊該行或設置SelectedRow時纔會發生這種情況。但是,在Form_Load – 2016-07-05 03:51:39

回答

0

Form.Load事件發生在首次顯示錶單之前,所有初始化都發生在那個時間。 不是建議將DataGridView內部的具體邏輯設置爲Load事件(大多數控件還可能正在初始化)。

我建議訂閱DataGridView.DataBindingComplete並玩你的邏輯。

dataGridView1.DataBindingComplete += dataGridView1_DataBindingComplete; 

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

之後很久,我無法找到DataBindingComplete事件。它在哪裏?我正在使用.NET 4.5 – user3035133

+1

你檢查了這個[鏈接](https://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.databindingcomplete(v = vs.110).aspx )? –

+0

我看到了,但是當我單擊「編輯」按鈕從DataGridView行加載數據以形成表單時,我無法使用此代碼。我只是想檢查用戶是否沒有點擊任何DataGridView行,不做任何其他的加載數據來形成。 – user3035133

相關問題