我想对Combobox控件有一个扩展方法,该方法通过字符串的任何部分建议组合框列表项。而不是列表项的第一部分。 我已经做了一些编码,但是失败了 (1)自动提示不出现 (2)组合框文字已被覆盖,我的意思是仅剩余一个字符 文本字段。 (3)有时候,可怕的事情发生了 System.AccessViolationException:'试图读取或写入受保护 记忆。这通常表明其他内存已损坏。'
public static void AutoCompleteByAnyString(this ToolStripComboBox CboBx,
DataTable SourceTable,
string Q )
{
if (Q.Length > 0 && SourceTable != null)
{
var Fs = (from Dr in SourceTable.AsEnumerable()
where Dr.Field<String>("Fs").Contains(Q.ToUpper())
select Dr [CboBx.ComboBox.DisplayMember]).ToArray();
AutoCompleteStringCollection A = new AutoCompleteStringCollection();
foreach (var item in Fs)
{
A.Add(item.ToString());
}
CboBx.AutoCompleteSource = AutoCompleteSource.CustomSource;
CboBx.AutoCompleteCustomSource = A;
CboBx.AutoCompleteMode = AutoCompleteMode.Suggest;
} else
{
CboBx.AutoCompleteSource = AutoCompleteSource.ListItems;
CboBx.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
}
}
上面的代码应该已经显示了建议的列表项。 注意:我正在使用VS2019