以下是我用来将DGV文本框单元格设置为自动完成文本框的代码。
private void dgvEntryVerify_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
TextBox txtBox = e.Control as TextBox;
txtBox.CharacterCasing = CharacterCasing.Normal;
DataGridViewCell currentCell = dgvEntryVerify.CurrentCell;
List<string> tmpList = new List<string>();
string tmpValue = "";
try
{
if (e.Control is TextBox)
{
tmpValue = "";
tmpList.Clear();
TextBox currentTextBox = e.Control as TextBox;
currentTextBox.Multiline = false;
currentTextBox.AutoCompleteMode = AutoCompleteMode.Suggest;
currentTextBox.AutoCompleteSource = AutoCompleteSource.CustomSource;
currentTextBox.AutoCompleteCustomSource = new AutoCompleteStringCollection();
if (currentCell.OwningColumn.Name.Contains("Parish"))
{
tmpValue = "";
tmpList.Clear();
tmpValue = currentCell.EditedFormattedValue.ToString();
tmpList = GlobalSettings.LookupParish.FindAll(t => t.StartsWith(tmpValue));
if (tmpList.Count > 0)
{
currentTextBox.AutoCompleteCustomSource.AddRange(tmpList.ToArray());
}
}
}
}
catch
{ }
}
但在用户界面中,自动完成文本框变为黑色,我需要为白色,这样我才能看到从列表中选择的相同值。
任何解决方案都非常感谢。
我正在使用VS2012,C#Winforms。
答案 0 :(得分:0)
黑色单元格由例程中的一行特定代码引起:
tmpValue = currentCell.EditedFormattedValue.ToString();
我没有进一步了解发生这种情况的原因,但由于您根本没有使用tmpValue
,因此对该行进行评论将解决您的问题。