walk along at the far from top

沙尘里的世界

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
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;
        } 
posted on 2008-11-21 13:51  lexod  阅读(407)  评论(0编辑  收藏  举报