private void comJg_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e) { ComboBox comb = (ComboBox)sender; if (Convert.ToInt32(e.KeyChar) == 13) { SendKeys.Send("{TAB}"); return; } if (e.KeyChar == (char)Keys.Back||e.KeyChar==(char)Keys.ControlKey) { return; } if (comb.SelectionLength > 0) { comb.SelectedText = ""; } comb.Text += e.KeyChar; e.Handled = true; AutoComplete(comb); } private void AutoComplete(ComboBox comb) { string strFilter = comb.Text; DataTable dstTable = new DataTable(); dstTable.Columns.Add("KEY"); dstTable.Columns.Add("NAME"); //AutoCompleteStringCollection strRslt = new AutoCompleteStringCollection(); foreach (DataRow row in m_tableNPCode.Rows) { string strCN = row["NAME"].ToString(); string strCNPinYin = commClass.ConvertPinYin.ConvertABC(strCN).ToLower();//获取拼音全拼 string strCNPinYinH = commClass.ConvertPinYin.GetStringSpell(strCN).ToLower();//获取拼音首字母 if (strCN.IndexOf(strFilter)==0 || strCNPinYinH.IndexOf(strFilter.ToLower())==0) { dstTable.ImportRow(row); //strRslt.Add(row["KEY"].ToString()); } if (ContainAEIOU(strFilter.ToLower()) && strCNPinYin.Contains(strFilter.ToLower())) { dstTable.ImportRow(row); } } if (dstTable != null && dstTable.Rows.Count > 0) { comb.DataSource = dstTable; comb.DroppedDown = true; comb.SelectedIndex = -1; comb.SelectedText = ""; comb.Text = strFilter; } //comb.SelectedIndex = -1; // comb.SelectionStart = strFilter.Length; } private bool ContainAEIOU(string src) { string[] yuanyinChar ={ "a", "e", "i", "o", "u" }; foreach (string str in yuanyinChar) { if (src.Contains(str)) return true; } return false; }
![](https://img2024.cnblogs.com/blog/35695/202403/35695-20240328092537879-1189167464.jpg)