C#ComboBox扩展方法建议通过任何字符串追加

时间:2019-07-05 08:05:52

标签: combobox

我想对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

0 个答案:

没有答案