Элементы управления VB.NET внутри строки DataGridView в форме Windows - PullRequest
0 голосов
/ 25 ноября 2008

У меня есть ComboBox внутри ячейки строки DataGridView в форме Windows. Мне нужно, чтобы произошло следующее:

  1. нажмите на поле со списком
  2. выберите значение
  3. пересчитать итог и отобразить внутри таблички, которая сидит за пределами DataGridView.

В настоящее время происходит следующее:

  1. Нажмите на поле со списком
  2. Нажмите ее еще раз, чтобы открыть раскрывающийся список CB
  3. выберите значение
  4. щелкните за пределами ячейки, чтобы вызвать пересчет внешняя этикетка.

Я хочу избежать, во-первых, необходимости дважды щелкать комбо (один раз, чтобы установить фокус, и снова, чтобы выбрать значение). Во-вторых, я бы хотел, чтобы после выбора значения произошел живой пересчет.

У кого-нибудь есть хитрость или два для решения любого из них?

Я попробовал большинство событий на DGV без особой удачи.

Ответы [ 2 ]

3 голосов
/ 25 ноября 2008

Добавьте обработчик к событию CellClick объекта DataGridView, который выглядит примерно так:

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 голос
/ 02 февраля 2011

Во-первых, задайте режим редактирования таблицы данных:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...