2012-01-05 3 views
0

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

добавить колонку, как это:

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 в строке выше .. ??

ответ

8

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

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

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

спасибо, дайте мне посмотреть на него .. – nawfal

+0

вы, кажется, эксперт по DataGridViews :) – nawfal

+1

Nah, мое знание является промежуточным в лучшем случае. Просто спотыкается, как и большинство людей. :) –

Смежные вопросы