2011-05-24 74 views
0

不要問爲什麼,但我需要一種方法來阻止用戶在'new'datagridview行中輸入單元格,但他們有多個行被選中。如何防止在選擇多個datagridview行時選擇「新」datagridview行中的單元格?

當前,正在選中鼠標在單擊和拖動過程中懸停的行的第一列中的單元格。如果您單擊單元格,則不再選擇行,因此您不能使用任何單元格單擊事件或任何其他內容。

歡迎任何建議。

P.S.不要嘗試編輯來自selectionchanged事件的當前單元格,已經嘗試過!

感謝,

艾薩克

回答

0

我有一個想法,DataGridView控件具有RowState屬性。當你的行被選中時,檢查狀態。我不確定州是什麼(如果我甚至在場上)...無論如何,你可能能夠檢查那條路線。

我正在尋找的詳細信息...

好了...想我找到了一個體面的方式來做到這一點:

void DataGridView1_RowsAdded (object sender, DataGridViewRowsAddedEventArgs e) 
{ 
    currentNewRow = e.RowIndex; 
} 

void DataGridView1_CellMouseClick(Object sender, DataGridViewCellMouseEventArgs e) 
{ 
    if (e.RowIndex == currentNewRow) 
    { 
     // don't add to Selection 
    } 
} 
+0

對不起,我應該在我的問題上更具體。當你選擇多行時,它實際上是爲鼠標所在的行選擇第一列的單元格。所以如果你點擊並拖動來選擇多行並釋放,你仍然有一個選定的單元格,而實際上沒有點擊它。 – 2011-05-30 23:57:37

0

使用CellStateChanged事件:

private void dataGridView_CellStateChanged(object sender, DataGridViewCellStateChangedEventArgs e) { 
      if (e.Cell.OwningRow.IsNewRow && dataGridView.SelectedRows.Count > 1) 
       e.Cell.Selected = false; 
     } 
+0

對不起,但單元格狀態改變不會觸發,除非我點擊單元格。但是,如果我點擊單元格,那麼選定的行= 0。 – 2011-05-30 23:55:52

相關問題