【问题标题】:How to get Value Member of a ComboBox by using its associated Display Text typed by user?如何使用用户键入的关联显示文本获取组合框的值成员?
【发布时间】:2013-12-24 11:55:30
【问题描述】:

我有一个绑定到数据集的组合框。 假设..

  cmbGroup.ValueMember = "Col1"
  cmbGroup.DisplayMember = "Col2"

当我在其中键入其中一个显示成员并按 Tab 时,我想获取组合框的值成员。 我有一个标签,当用户更改所选索引时,它会获取值成员 Col2 的文本。 但是,当您在组合框中输入显示值并按 Tab 键时,即使您输入的值是其成员,所选索引也不会在组合框中发生更改。 我也会接受 C# 中的答案,因为有很多在线转换器可用。 ;)

【问题讨论】:

    标签: c# .net vb.net winforms combobox


    【解决方案1】:

    将 AutoCompleteMode 属性设置为 AutoCompleteMode.Suggest

    comboBox1.AutoCompleteMode = AutoCompleteMode.Suggest 
    

    【讨论】:

    • TY这不是我需要的我知道如何获得选定值请再次阅读问题
    • 我想通过在组合框中输入正确的值来更改选定的索引。
    • 我明白。你试过我写的吗?它将 SelectedIndex 更改为用户输入的值,
    • 你是对的,我想我正面临问题,因为数据源最后由空格组成
    • 您能告诉我如何删除 Combobox 中的尾随空格吗?尽管数据库表中的值已被修剪,但我在组合框中显示的每个值的末尾都有 2-3 个空格\
    【解决方案2】:

    在回答之前,我得问你下次请用更好的句子:),我几乎要死去得到你试图告诉你的东西了:D

    您需要将表中的所有成员添加到您的组合框中,并且当用户尝试在组合框中键入内容时附加未键入的部分。

    在组合框中添加成员的C#代码:

            string Query = "SELECT ColumnName FROM TableName";
            using(SqlCommand comSQL = connectionDB.CreateCommand())
            {
                comSQL.CommandText = Query;
                    using (SqlDataReader drSql = comSQL.ExecuteReader())
                    {
                        while (drSQL.Read())
                        {
                            ComboBox.Items.Add(drSQL.GetString(0));
                        }
                    }
            }
    

    对于附加无类型部分,您必须更改名为 AutoCompleteMode 的组合框的属性:

    ComboBox.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.Append;
    

    更新:

    要使用我的解决方案,您必须从 DataSet 中解除组合框的绑定。

    【讨论】:

    • 很遗憾,但这离 OP 太远了。
    • @Bjørn-RogerKringsjå 在那种情况下我真的不明白这是什么问题!
    • 我不认为你是唯一的一个;p
    • 话虽如此,他确实声明了“绑定到数据集的组合框”。如果是这样,通过手动修改ObjectCollection(Items)会导致错误。
    猜你喜欢
    • 2013-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-21
    • 2018-06-16
    • 2017-12-22
    相关资源
    最近更新 更多