我有一个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
.. ??
答案 0 :(得分:8)
除非该单元格处于编辑模式,否则我认为您无法访问单元格的编辑控件。我认为单元格在进入编辑模式之前没有编辑控件。这可能是单元格上没有EditingControl属性的原因,但有一个DataGridView。
您可以使用单元格的EditType
属性获取单元格的编辑控件类型,并且可以使用DataGridView.EditingControl
属性获取当前编辑控件。
if (dgv.CurrentCell.EditType == typeof(DataGridViewTextBoxEditingControl))
{
((TextBox)dgv.EditingControl).AutoCompleteSource =
AutoCompleteSource.CustomSource;
}