代码之家  ›  专栏  ›  技术社区  ›  Clyde

WinForms组合框下拉列表和自动完成窗口都会出现

  •  28
  • Clyde  · 技术社区  · 16 年前

    我有一个 ComboBox 在具有以下代码的winforms应用程序上:

    comboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
    comboBox1.AutoCompleteSource = AutoCompleteSource.ListItems;
    
    DataTable t = new DataTable();
    t.Columns.Add("ID", typeof(int));
    t.Columns.Add("Display", typeof(string));
    
    for (int i = 1; i < 2000; i++)
    {
        t.Rows.Add(i, i.ToString("N0"));
    }
    
    comboBox1.DataSource = t;
    comboBox1.ValueMember = "ID";
    comboBox1.DisplayMember = "Display";
    

    然后,当窗口打开时,我执行以下步骤:

    1. 单击 组合框 下拉按钮——显示项目列表并选择列表中的文本 组合框

    这是电脑里的窃听器吗 组合框 ? 如果有关系的话,我用的是Windows7。我正在配置 怎么错了?

    enter image description here

    10 回复  |  直到 8 年前
        1
  •  20
  •   Hans Passant    16 年前

    只需从PropertyGrid设置属性,就可以获得相应的复制。在Win7和windowsxp中都是这样。

    这是本文档中记录的破坏行为 feedback article

        2
  •  28
  •   Mong Zhu Bart de Boer    9 年前

    ComboBox KeyDown 事件和问题解决了!

    private void comboBox_NameAndID_KeyDown(object sender, KeyEventArgs e)
    {
        comboBox_NameAndID.DroppedDown = false;
    }
    

    Source

        3
  •  2
  •   Wilton Alves    11 年前

    我是一个巴西利亚学生的编码和我失去了很多小时来解决它在我的项目。在这里,我几秒钟就看到了!!!

    我的代码如下:

    private void populateCombos()
        {
            persist.ShowLst(dspMember, vlMember,varTable,lstBox,varWhere);
            persist.ShowLst(dspMember, vlMember,varTable,ddlist1,varWhere);
            persist.ShowLst(dspMember, vlMember,varTable, ddlist2,varWhere);
    
            ddList1.Text = null;
            ddList2.Text = null;
    
            lstBox.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
            lstBox.AutoCompleteSource = AutoCompleteSource.ListItems;
            lstBox.Text = null;
        }
    
        4
  •  1
  •   ComboBoxNerd    12 年前

    添加到/a按键事件。

        Dim box As ComboBox = sender
        box.DroppedDown = False
    
        5
  •  1
  •   Saurav Das    9 年前

    从设计视图中选择组合框,并将“Append”设置为AutoCompleteMode属性,这将在不显示窗口的情况下建议项目。

        6
  •  0
  •   Jürgen Steinblock    16 年前

    真奇怪。你的代码看起来很好,我用了好几次自动完成功能,它没有显示下拉列表和自动完成列表。

    我的建议是

    • comboBox1.ValueMember = "ID";
      comboBox1.DisplayMember = "Display";
      comboBox1.DataSource = t;
      
    • 在代码末尾设置AutoCompleteSource(添加DataSouce后)

    也许这有帮助。

        7
  •  0
  •   AC25    12 年前

    要一次只打开一个窗口,可以使用comboBox1.Droppeddown=true打开常规窗口,false只显示自动完成窗口

        8
  •  0
  •   vivek verma    11 年前

    现在去属性选项的组合框选择 AutoCompleteSource=列表项

    注:自动完成源有许多选项,根据您的要求:)

        9
  •  0
  •   Mong Zhu Bart de Boer    9 年前

    WinForms组合框下拉列表…答案是。。。

    private void comboBox1_Enter(object sender, EventArgs e)
    {
        comboBox1.DroppedDown = true;
    }
    

    现在对于comboBox1自动完成。。。
    写这个 AutoComplete() 在页面加载事件中..所以它工作。。。

    public void AutoComplete()
    {
        try
        {
            MySqlConnection conn = new 
            MySqlConnection("server=localhost;database=databasename;user
                id=root;password=;charset=utf8;");
            MySqlCommand cmd = new MySqlCommand("select distinct
                (columnName) from tablename", conn);
            DataSet ds = new DataSet();
            MySqlDataAdapter da = new MySqlDataAdapter(cmd);
            da.Fill(ds, "tablename");
            AutoCompleteStringCollection col = new
            AutoCompleteStringCollection();
    
            int i = 0;
            for (i = 0; i <= ds.Tables[0].Rows.Count - 1; i++)
            {
                col.Add(ds.Tables[0].Rows[i]["columnName"].ToString());
            }
            comboBox1.AutoCompleteSource = AutoCompleteSource.CustomSource;
            comboBox1.AutoCompleteCustomSource = col;
            comboBox1.AutoCompleteMode = AutoCompleteMode.Suggest;
            if (conn.State == ConnectionState.Open)
            {
                conn.Close();
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK,
        MessageBoxIcon.Error);
        }
    }
    
        10
  •  0
  •   Ben Cameron    9 年前

    从“设计”视图中选择组合框,并将“无”设置为AutoCompleteMode属性。

    推荐文章