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;
}