.net 如何获取datagridview/datagridviewcell的编辑控件?

.net 如何获取datagridview/datagridviewcell的编辑控件?,.net,winforms,datagridview,datagridviewtextboxcell,.net,Winforms,Datagridview,Datagridviewtextboxcell,我有一个datagridviewcell,其中textbox作为它承载的控件。现在,如何在代码的其他部分以编程方式获取控件类型 我添加如下列: DataGridViewTextBoxColumn col = new DataGridViewTextBoxColumn(); col.ReadOnly = false; col.Name = "Status"; col.HeaderText = "Status"; dgv.Columns.Add(col); private void dgv_Edi

我有一个datagridviewcell,其中textbox作为它承载的控件。现在,如何在代码的其他部分以编程方式获取控件类型

我添加如下列:

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
    }
}
该列中的所有单元格现在都将有一个文本框。我可以将控件作为文本框获取,如下所示:

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

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

可以使用单元格的
EditType
属性获取单元格的编辑控件类型,也可以使用
DataGridView.EditingControl
属性获取当前编辑控件

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

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

可以使用单元格的
EditType
属性获取单元格的编辑控件类型,也可以使用
DataGridView.EditingControl
属性获取当前编辑控件

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

你似乎是datagridviews方面的专家:)不,我的知识充其量只是中等水平。就像大多数人一样蹒跚而行。:)你似乎是datagridviews方面的专家:)不,我的知识充其量只是中等水平。就像大多数人一样蹒跚而行。:)