2014-03-12 63 views
0
frmCustomerDetails cd; 
private void dataGridView1_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e) 
{ 
    try 
    {    
     DataGridViewRow dr = dataGridView1.SelectedRows[0]; 
     this.Hide(); 
     if (cd == null || cd.IsDisposed) 
     { 
      cd = new frmCustomerDetails(); 
      cd.MdiParent = new frmDairyManagementSystem(); 
      cd.WindowState = FormWindowState.Maximized; 
      cd.Show(); 
     } 
     else 
      cd.Activate(); 
     cd.txtCustomerID.Text = dr.Cells[0].Value.ToString(); 
     cd.dateTimePicker1.Text=dr.Cells[1].Value.ToString(); 
     cd.txtCustomerName.Text = dr.Cells[2].Value.ToString(); 
     cd.grpGender.Text=dr.Cells[3].Value.ToString(); 
     cd.txtAddress.Text = dr.Cells[4].Value.ToString(); 
     cd.txtPhone.Text = dr.Cells[5].Value.ToString(); 
     cd.txtEmail.Text = dr.Cells[6].Value.ToString(); 
     cd.txtMobileNo.Text = dr.Cells[7].Value.ToString(); 
     cd.txtNotes.Text = dr.Cells[8].Value.ToString(); 
     cd.btnUpdate.Enabled = true; 
     cd.btnDelete.Enabled = true; 
     cd.btnSave.Enabled = false; 
     cd.txtCustomerName.Focus(); 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); 
    } 
} 

在我的主窗體中,我使用Mdi打開了一個子窗體。winform2使用sql server 2008

子窗體的名稱是CustomerDetails。在這種形式下,如果我想更新或刪除已經存在的客戶,我在客戶名稱前添加了一個按鈕。點擊該按鈕後,將打開一個名爲CustomerRecord的新表單。在這種形式中,我使用了DataGridView,並且我編寫了代碼來從數據庫中檢索數據。

現在我想,如果dataGridView1_RowHeaderMouseClick被點擊,我想獲取CustomerDetails窗體上選定的行。

上述代碼無效。

還有一個問題發生在dateTimePicker下面,grpGender也不起作用。

這是我作爲一個項目必須提交給大學的第一個項目。

它沒有采取我的主要形式。

回答

0

此行是行不通的:

cd.MdiParent = new frmDairyManagementSystem(); 

的MDI父對象必須是頂級的形式。然後在其中實例化孩子並將其添加到mdi集合中。

如果frmDairyManagementSystem是父級,則它必須是活動且可見的。

+0

那麼該怎麼做 – user3327117