2009-04-20 77 views
1

我試圖支持編輯datagridview上的多個單元格。我差不多完成了,因爲它在編輯完成後正確地將內容複製到其他單元格。我現在正在處理的是捕獲按下的第一個鍵。需要幫助編輯datagridview中的多個單元格

當我編輯只有一個單元格時,使用EditOnKeystrokeOrF2工作正常。但是,選擇多個單元格時,我正在捕獲Keydown事件並手動調用BeginEdit。但是,當我這樣做時,按下的鍵不包含在編輯中。

我怎樣才能讓第一個按鍵進入我的手機?

回答

1

我做了一些額外的實驗,並找到了一種方法來實現這一點。這是有點草率,但它的作品。

private int _keyValue; 
private Boolean _checkKeyValue = false; 

private void Grid1_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e) 
{ 
    DataGridViewCell cell = Grid1.Rows[e.RowIndex].Cells[e.ColumnIndex]; 

    if (_checkKeyValue) 
    { 
     _checkKeyValue = false; 

     if (value != -1) 
     { 
      cell.Value = _keyValue; 
     } 
    } 
} 

private void Grid1_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (Grid1.SelectedCells.Count > 1) 
     { 
      _checkKeyValue = true; 
      _keyValue = (int)e.KeyValue; 
      Grid1.BeginEdit(false); 
     } 
} 

通過註冊CellBeginEdit事件,我可以在其中填充值。我對_keyValue進行了一些其他處理,使其成爲一個數字,但這與其餘部分無關。

0

可能只是將鍵標記爲未處理就足夠了。

private void dataGridView_KeyDown(Object sender, KeyEventArgs keyEventArgs) 
{ 
    keyEventArgs.Handled = false; 
} 
+0

哦,以爲這看起來很有前途。但是,當我嘗試它時,它沒有幫助,而且看起來像「處理」屬性已經是錯誤的。 – 2009-04-20 17:13:58