我有简单的文本框示例如下:
private void Form1_Load(object sender, EventArgs e)
{
textBox1.Text = "Apple";
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
if (textBox1.Text.Length == 1)
{
if (textBox1.Text == "B" || textBox1.Text == "b")
{
textBox1.Text = "Ball";
}
}
}
默认情况下,textbox1应该在表单加载时返回“Apple”但是当我按“b”或“B”时它应该在textbox1上返回“Ball”。我对将其用于datagridview感到困惑。我怎么能在datagridview中做到这一点?。
假设我在datagridview上有一列,如下所示:
private void Form1_Load(object sender, EventArgs e)
{
DataGridViewColumn Particulars = new DataGridViewTextBoxColumn();
dataGridView1.Columns.Insert(0, Particulars );
}
如果我在datagridview1中的列上面比如何使用datagridview1,我用textbox做了吗?
答案 0 :(得分:5)
您可能会发现使用内置于文本框控件的自动完成功能更为直接,而不是尝试自行编码所有可能的方案。
您必须配置TextBox
控件的两个重要属性才能启用其自动完成功能: AutoCompleteMode
和 AutoCompleteSource
< /强>
AutoCompleteMode
属性允许您选择 文本框自动完成功能的实际效果。您可以选择AutoCompleteMode
values
None Disables the automatic completion feature for the ComboBox and TextBox controls. Suggest Displays the auxiliary drop-down list associated with the edit control. This drop-down is populated with one or more suggested completion strings. Append Appends the remainder of the most likely candidate string to the existing characters, highlighting the appended characters. SuggestAppend Applies both Suggest and Append options.
中的任何一个
AutoCompleteSource
属性允许您指定希望文本框建议自动完成的字符串。在您的情况下,您可能需要指定CustomSource
,这需要您将 AutoCompleteCustomSource
属性设置为用户定义的字符串集合 - 例如“Apple,球,......“等等。
DataGridViewTextBoxColumn
只是托管标准TextBox
控件,因此它提供的所有自动完成功能都已免费提供给您。您可以通过处理EditingControlShowing
的{{1}}事件来设置此文本框的相应属性,如下所示:
DataGridView
编辑:如果您希望保持与原始文本框示例中相同的行为,则只需处理{{1}的private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
//Create and fill a list to use as the custom data source
var source = new AutoCompleteStringCollection();
source.AddRange(new string[] {"Apple", "Ball"});
//Set the appropriate properties on the textbox control
TextBox dgvEditBox = e.Control as TextBox;
if (dgvEditBox != null)
{
dgvEditBox.AutoCompleteMode = AutoCompleteMode.Suggest;
dgvEditBox.AutoCompleteCustomSource = source;
dgvEditBox.AutoCompleteSource = AutoCompleteSource.CustomSource;
}
}
事件}} 即可。正如我上面已经解释的那样,TextChanged
只是托管一个标准的DataGridViewTextBoxColumn
控件,所以为它的DataGridViewTextBoxColumn
事件添加一个处理程序并使用你之前使用的相同代码是相当简单的:
TextBox