2008-11-25 77 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