1

我有一个带有文本框的 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上面的行.. ??

4

1 回答 1

10

我认为您无法访问单元格的编辑控件,除非该单元格处于编辑模式。我认为单元格在进入编辑模式之前没有编辑控件。这可能是单元格上没有 EditingControl 属性,但 DataGridView 有一个的原因。

通过单元格的属性可以获取单元格的编辑控件的类型,通过该EditType属性可以获取当前的编辑控件DataGridView.EditingControl

if (dgv.CurrentCell.EditType == typeof(DataGridViewTextBoxEditingControl))     
{         
    ((TextBox)dgv.EditingControl).AutoCompleteSource =
        AutoCompleteSource.CustomSource; 
}
于 2012-01-05T22:58:33.177 回答