Windows窗体上DataGridView行内的VB.NET控件

Windows窗体上DataGridView行内的VB.NET控件,vb.net,winforms,Vb.net,Winforms,我在Windows窗体上DataGridView行的单元格中有一个组合框。我需要做到以下几点: 单击组合框 选择一个值 重新计算总数&显示在正在放置的标签内 在DataGridView之外 目前,正在发生以下情况: 单击组合框 再次单击以打开CB的下拉列表 选择一个值 在单元格外单击以强制重新计算 外部标签 首先,我希望避免必须单击组合两次(一次设置焦点,另一次选择值)。其次,我希望在选择一个值后进行实时重新计算 有人有一两个技巧来解决这些问题吗 我在DGV上尝试了大多数事件,但运气不太好。在D

我在Windows窗体上DataGridView行的单元格中有一个组合框。我需要做到以下几点:

  • 单击组合框
  • 选择一个值
  • 重新计算总数&显示在正在放置的标签内 在DataGridView之外
  • 目前,正在发生以下情况:

  • 单击组合框
  • 再次单击以打开CB的下拉列表
  • 选择一个值
  • 在单元格外单击以强制重新计算 外部标签
  • 首先,我希望避免必须单击组合两次(一次设置焦点,另一次选择值)。其次,我希望在选择一个值后进行实时重新计算

    有人有一两个技巧来解决这些问题吗


    我在DGV上尝试了大多数事件,但运气不太好。

    在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;
    }
    

    将处理程序添加到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;
    }
    

    首先,设置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
    

    首先,设置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
    

    你应该在提问前真正搜索:你应该在提问前真正搜索: