как получить контроль редактирования datagridview / datagridviewcell? - PullRequest
0 голосов
/ 06 января 2012

У меня есть ячейка данных с текстовым полем в качестве элемента управления, размещенного на нем.Теперь, как мне получить тип управления программно в других частях моего кода?

Я добавляю столбец так:

DataGridViewTextBoxColumn col = new DataGridViewTextBoxColumn();
col.ReadOnly = false;
col.Name = "Status";
col.HeaderText = "Status";
dgv.Columns.Add(col);

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

private void dgv_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
    if (dgv.CurrentCell.ColumnIndex == 5 && e.Control is TextBox)
    {
         //something
    }
}

Как получить тип элемента управления, размещенного в ячейке в другом месте?Как получить e.Control из других частей кода, чтобы я мог делать такие вещи, как:

((TextBox)dgv[i, j].EditinControl).AutoCompleteSource = AutoCompleteSource.CustomSource;
((TextBox)dgv[i, j].EditinControl).AutoCompleteCustomSource = someSource;
((TextBox)dgv[i, j].EditinControl).AutoCompleteMode = AutoCompleteMode.SuggestAppend;

и т. Д.Что может заменить EditinControl в приведенной выше строке .. ??

1 Ответ

8 голосов
/ 06 января 2012

Я не думаю, что вы можете получить доступ к управлению редактированием ячейки, если эта ячейка не находится в режиме редактирования. Я думаю, что ячейка не имеет контроля редактирования, пока не войдет в режим редактирования. Вероятно, поэтому в ячейке нет свойства EditingControl, но есть свойство DataGridView.

Вы можете получить тип элемента управления для редактирования ячейки, используя свойство EditType ячейки, и вы можете получить текущий элемент управления для редактирования со свойством DataGridView.EditingControl.

if (dgv.CurrentCell.EditType == typeof(DataGridViewTextBoxEditingControl))     
{         
    ((TextBox)dgv.EditingControl).AutoCompleteSource =
        AutoCompleteSource.CustomSource; 
}
...