【问题标题】:How do I create a textBox autoCompleteSource from dataset table?如何从数据集表创建文本框 autoCompleteSource?
【发布时间】:2019-09-25 02:46:31
【问题描述】:

在我的 Winform 中,我有一个 TextBox。我将它设置为“AutoComplete”,并且我想知道在我的代码(c#)中写什么,将它的“AutoCompleteSource”设置为 DataSet 表中某些列的值。 谢谢!

【问题讨论】:

    标签: c# winforms autocomplete textbox dataset


    【解决方案1】:

    使用这篇文章填充数据源:

    Source = dt.AsEnumerable().Select<System.Data.DataRow, String>(x => x.Field<String>("Name")).ToArray();
    

    这会建议你

    textbox.AutoCompleteCustomSource = source;
    textbox.AutoCompleteMode = AutoCompleteMode.Suggest;
    textbox.AutoCompleteSource = AutoCompleteSource.CustomSource;
    

    【讨论】:

    • 两件事,1)您的选择语句中不需要&lt;System.Data.DataRow, String&gt;。 2) 您的文本框将显示 Name 列的所有值列表,而 OP 期望显示所有列名的列表。
    • 我真的很想要这些价值观。数据源必须是特定列的值。
    • 在 ("Name") 中输入您的列名,您将在源变量中获得特定的列值
    【解决方案2】:

    假设您在table 变量中有一个数据表,那么要将其列列表显示为自动完成源,您可以使用如下代码:

    var columns = table.Columns.Cast<DataColumn>();
    var source = new AutoCompleteStringCollection();
    source.AddRange(columns.Select(x => x.ColumnName).ToArray());
    textBox1.AutoCompleteCustomSource = source;
    textBox1.AutoCompleteSource = AutoCompleteSource.CustomSource;
    textBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
    

    但是,使用ComboBox 更有意义。要查看ComboBox 的示例,请查看this post

    【讨论】:

      【解决方案3】:

      在代码中:

      var rows = table.Rows.Cast<DataRow>();
      var source = new AutoCompleteStringCollection();
      source.AddRange(rows.Select(x => x.Field<String>("ColumnName")).ToArray());
      textBox.AutoCompleteCustomSource = source;
      textBox.AutoCompleteSource = AutoCompleteSource.CustomSource;
      textBox.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
      

      只需替换 tabletextBox"ColumnName"

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-08-24
        • 1970-01-01
        • 2020-07-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-28
        • 1970-01-01
        相关资源
        最近更新 更多