dataGridView изменить источник данных и тип ячейки - PullRequest
0 голосов
/ 12 мая 2018

После того, как я щелкну определенную строку и нажму button, я хочу изменить тип cell с типа по умолчанию (DataGridViewTextBoxCell) на DataGridViewComboBoxCell и изменить источник данных этой ячейки на список.

Каким-то образом я столкнулся с необъяснимым поведением, в одной строке он работает и показывает ComboBox, в другой он просто входит в режим редактирования.

Мой код выглядит примерно так:

 private void btnClick(object sender, EventArgs e)
 {
    dataGridView.BeginEdit(true);

    var selectedRow = CurrentCell.RowIndex;
    var selectedColumn = CurrentCell.ColumnIndex;
    var cellName = dataGridView[0, _selectedCell.RowIndex].Value.ToString();
    var dict = GetDict(cellName);

    if (dict != null)
    {
       var comboBoxCell = new DataGridViewComboBoxCell
       {
           DataSource = dict.Keys.ToList()
       }
       dataGridView[1, selectedRow] = comboBoxCell;
       dataGridView.CurrentCell = dataGridView.Rows[selectedRow].Cells[selectedColumn];
    }
    dataGridView.BeginEdit(false);
}

Обновление: Кажется, только после того, как event CellBeginEdit запущен, что вызвано нажатием других cell обновлений, но тогда для * 1018 требуется 3-4 щелчка * чтобы открыть.

1 Ответ

0 голосов
/ 14 мая 2018

Попробуйте этот код.Вы должны переопределить CellClick Event или Call You Method There.Этот код написан на CellClick Событии, не путайте с Именем

//This Code is written in CellClick Event not in CellContentClick (Don'tconfuse with signature)
    private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

            dataGridView1.BeginEdit(true);
            var selectedRow = (sender as DataGridView).CurrentCell.RowIndex;
            var selectedColumn = (sender as DataGridView).CurrentCell.ColumnIndex;
            var comboBoxCell = new DataGridViewComboBoxCell
            {

            };
            dataGridView1.CurrentCell = dataGridView1.CurrentCell as DataGridViewComboBoxCell;
            dataGridView1[selectedColumn, selectedRow] = comboBoxCell;
            dataGridView1.CurrentCell = dataGridView1.Rows[selectedRow].Cells[selectedColumn];
           dataGridView1.BeginEdit(false);
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...