Gridview - конвертировать текстовые ячейки в comboboxcell и обратно - PullRequest
0 голосов
/ 30 июня 2011

У меня есть вопрос о datagridviewcell. я создал textboxcolumn в datagridview. когда я щелкаю конкретную ячейку, ячейка должна измениться на datagridviewcomboboxcell. Также мне нужно добавить элемент в коллекцию combobox. тогда, когда я иду в другую ячейку, новая ячейка получает ячейку datagridviewcombobox, и существующая ячейка должна измениться на ячейку datagridviewtextbox ...

1 Ответ

1 голос
/ 30 июня 2011

Вы можете изменить DataGridViewTextBoxCell на DataGridViewComboBoxCell в событии CellBeginEdit и вернуть его обратно в событие CellEndEdit.

Попробуйте это:

        private void dataGridView1_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
        {   DataGridViewComboBoxCell cb=new DataGridViewComboBoxCell();
            cb.Items.Add(dataGridView1.CurrentCell.Value);
            //add your other itmes here;
            dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex] = cb;//change the DataGridViewTextBoxCell to DataGridViewComboBoxCell 
        }

        delegate void settexthandler(DataGridViewCellEventArgs e); //use delegate to prevent reentrant call 

        private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            dataGridView1.BeginInvoke(new settexthandler(settoTextBox), new object[] { e });           
        }

        void settoTextBox(DataGridViewCellEventArgs e)
        {
            DataGridViewTextBoxCell tb = new DataGridViewTextBoxCell();

            tb.Value = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;
            dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex] = tb; //set it back to DataGridViewTextBoxCell with newly selected value 
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...