2011-12-28 45 views
0

我在DataGridView對象中顯示數據。第一列表示刪除,第二列表示編輯爲複選框,其餘爲數據。如何使用DataGridView中的2個複選框刪除或編輯?

我想要做的是在選中其中一個複選框時刪除並編輯選定的數據。

我被卡住瞭如何選擇其中一個複選框,基本上如何檢查哪個字段被點擊。

我該怎麼做?

我有這裏面取消任何其他方面的檢查早期:

public MainWindow() 
{ 
    InitializeComponent(); 

    dgvPC.CellContentClick += new DataGridViewCellEventHandler(ContentClick_CellContentClick); 
} 

void ContentClick_CellContentClick(object sender, DataGridViewCellEventArgs e) 
{ 
    foreach (DataGridViewRow row in dgvPC.Rows) 
    { 
     row.Cells[Delete1.Name].Value = false; 
     row.Cells[Edit1.Name].Value = false; 
    } 
} 

我添加數據,例如:

if (security.DecryptAES(read.GetString(1), storedAuth.Password, storedAuth.UserName) == "PC Password") 
{ 
    // Count PC passwords. 
    countPC++; 

    dgvPC.Rows.Add(read.GetInt32(0), false, false, 
     security.DecryptAES(read.GetString(5), storedAuth.Password, storedAuth.UserName), 
     security.DecryptAES(read.GetString(6), storedAuth.Password, storedAuth.UserName)); 
} 

回答

1

我從你的說法,你是無法確定其複選框推斷被認爲是

所以要縮小你應該嘗試使用網格的CellValueChanged事件

void grd_CellValueChanged(object sender, DataGridViewCellEventArgs e) 
{ 
    if ((sender as DataGridView).CurrentCell is DataGridViewCheckBoxCell) 
    { 
      //Now you know its a checkbox 
      //use the ColumnIndex of the CurrentCell and you would know which is the column 
      // check the state by casting the value of the cell as boolean 
    } 
} 

如果您希望立即採取措施,則必須提交該值,並在焦點移出單元格時發生這種情況。嘗試處理CurrentCellDirtyStateChanged電網

像這樣的東西應該爲你工作

void grd_CurrentCellDirtyStateChanged(object sender, EventArgs e) 
{ 
    if (grd.IsCurrentCellDirty) 
    { 
     grd.CommitEdit(DataGridViewDataErrorContexts.Commit); 
    } 
} 
+0

CellValueChanged工作很怪。我在你的內部插入了MessageBox當我選擇一個複選框時什麼也沒有發生,但是當我選擇其他複選框時,我得到了2個消息框。 – HelpNeeder 2011-12-28 14:53:50

相關問題