private void comboBox1_TextChanged(object sender, System.EventArgs e) int i = this.comboBox1.FindString(this.comboBox1.Text);
this.comboBox1.Select(i,1);
}

解决方案 »

  1.   

    修正一下
    private void comboBox1_TextChanged(object sender, System.EventArgs e)
    {
    try
    {
    this.comboBox1.DroppedDown = true;
    int i = this.comboBox1.FindString(this.comboBox1.Text);
    this.comboBox1.Select(i,1);
    }
    catch{}
    }
      

  2.   

    再更正一次
    private void comboBox1_TextChanged(object sender, System.EventArgs e)
    {
    try
    {
    if(this.comboBox1.Text.Trim() == "")
    return;
    this.comboBox1.DroppedDown = false;
    int i = this.comboBox1.FindString(this.comboBox1.Text);
    this.comboBox1.Select(i,1);
    this.comboBox1.DroppedDown = true;
    SendKeys.Send("{DOWN}");
    }
    catch{}
    }
      

  3.   

    TO: rouser(我是一棵秋天的树) 
      按你的办法只能匹配键入的首字符,而从键入的第2个字符开始就又重新匹配了
      

  4.   

    http://www.codeproject.com/combobox/combocompletion.asp?target=combobox%7Cauto
      

  5.   

    找到实现方法了:
    private bool _limitToList = true;
    private bool _inEditMode = false;
    protected override void OnTextChanged(System.EventArgs e)
    {
        if (_inEditMode)
        {
            string input = Text;
            int index = FindString(input);
            if (index >= 0)
            {
                 _inEditMode = false;
                 SelectedIndex = index;
                 _inEditMode = true;
                 Select(input.Length, Text.Length);
            }
       }    base.OnTextChanged(e);
    }
    protected override void OnKeyDown(System.Windows.Forms.KeyEventArgs e)
    {
        _inEditMode = (e.KeyCode != Keys.Back && e.KeyCode != Keys.Delete);
        base.OnKeyDown(e);
    }