DataGridView ComboBox теряет свое значение при изменении CurrentCell

У меня есть DataGridView с несколькими столбцами, и первый тип столбца — Combobox.

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

Я действительно сделал это, но проблема именно в том, о чем говорится в теме: элемент списка внутри ячейки теряет свое значение, если я вмешиваюсь в .CurrentCell, чтобы сфокусироваться на следующей ячейке.

Он сохраняет свое значение только в том случае, если я нажимаю клавишу ‹Enter> или ‹Tab> после изменения значения поля со списком.

DataGridView1.EditingControlShowing += new DataGridViewEditingControlShowingEventHandler(DataGridView1_EditingControlShowing);

private void DataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
    e.CellStyle.BackColor = Color.Red;
    e.CellStyle.ForeColor = Color.White;

    if (e.Control.GetType() == typeof(DataGridViewComboBoxEditingControl))
    {
        Console.WriteLine("adding handler");
        ComboBox cmb = (ComboBox)e.Control;
        //cmb.SelectedIndexChanged -= new EventHandler(ComboBox_SelectedIndexChanged);
        //cmb.SelectedIndexChanged += new EventHandler(ComboBox_SelectedIndexChanged);

        cmb.SelectionChangeCommitted -= new EventHandler(cmb_SelectionChangeCommitted);
        cmb.SelectionChangeCommitted += new EventHandler(cmb_SelectionChangeCommitted);
    }

}
void cmb_SelectionChangeCommitted(object sender, EventArgs e)
{
    ComboBox cmb = (ComboBox)sender;
Console.WriteLine("Index #{0} Value:{1}", cmb.SelectedIndex.ToString(), cmb.SelectedValue.ToString()); //its working

    DataGridViewCell c = DataGridView1.CurrentCell; //get current cell
    DataGridView1.CurrentCell = DataGridView1[1, c.RowIndex]; //skips to next cell on the same row

    //here combobox lost its value after focusing on another cell!
}

person Roni Tovi    schedule 28.11.2015    source источник


Ответы (1)


Хорошо, я понял это. Я использовал SenKeys.Send, чтобы обойти.

person Roni Tovi    schedule 28.11.2015