2008-11-25 74 views
0

我在Windows窗體上的DataGridView行的單元格內有一個ComboBox。我需要以下情況發生:在Windows窗體上的DataGridView行內的VB.NET控件

  1. 單擊組合框
  2. 選擇一個值
  3. 重新計算正坐在外面 在DataGridView的拉布勒內共有&顯示。

目前,以下是發生的事情:

  1. 單擊組合框
  2. 再次單擊它可以打開CB的下拉列表
  3. 選擇
  4. 點擊之外的一個值單元強制重新計算 外部標籤。

我想要避免,首先,必須單擊組合兩次(一次設置焦點,再次選擇值)。其次,我想在選擇一個值後進行實時重新計算。

有沒有人有一個或兩個技巧來解決這些問題?

我已經嘗試了DGV上的大部分事件,但沒有多少運氣。

+1

你應該真的搜索之前,你問一個問題:http://stackoverflow.com/questions/241100/how-to-m全線-下拉-A-datagridviewcomboboxcolumn – 2008-11-25 15:13:51

回答

3

添加處理到DataGridView的CellClick事件,看起來有點像:

private void vehicleTypeGridView_CellClick(object sender, DataGridViewCellEventArgs e) 
{ 
    if (e.RowIndex == - 1) return; //Header Cell clicked -> ignore it. 
    vehicleTypeGridView.BeginEdit (true); 
    var control = vehicleTypeGridView.EditingControl as DataGridViewComboBoxEditingControl; 
    if (control != null) control.DroppedDown = true; 
} 
1

首先,設置你的datagridview編輯模式:

datagridview.EditMode = Windows.Forms.DataGridViewEditMode.EditOnEnter 

接下來,sendkey設置爲F4的組合框:

Private Sub datagridview_EditingControlShowing(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) 
     Handles datagridview.EditingControlShowing 
    Dim CB As Object = TryCast(e.Control, System.Windows.Forms.ComboBox) 
    If CB IsNot Nothing Then 
     My.Computer.Keyboard.SendKeys("{F4}") 
    End If 
End Sub