Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否可以在文本框中将数据表设置为自动完成源?(C)_C# - Fatal编程技术网

C# 是否可以在文本框中将数据表设置为自动完成源?(C)

C# 是否可以在文本框中将数据表设置为自动完成源?(C),c#,C#,是否可以在文本框中将数据表设置为自动完成源?是的 下面是一个使用类型化数据集和两个文本框的示例…滚动顶部的大图像以获取代码 For Each store As StoreDataSet.StoreRow In StoreDataSet.Store If store.StoreID.StartsWith("0") Then StoreIDTextBox.AutoCompleteCustomSource.Add(store.StoreID.TrimStart("0"))

是否可以在文本框中将数据表设置为自动完成源?是的

下面是一个使用类型化数据集和两个文本框的示例…滚动顶部的大图像以获取代码

For Each store As StoreDataSet.StoreRow In StoreDataSet.Store
    If store.StoreID.StartsWith("0") Then
        StoreIDTextBox.AutoCompleteCustomSource.Add(store.StoreID.TrimStart("0"))
    End If
    StoreIDTextBox.AutoCompleteCustomSource.Add(store.StoreID)
    StoreNameTextBox.AutoCompleteCustomSource.Add(store.StoreName)
Next store

不是直接的,您需要将数据表读入一个数据库

你可以这样做:


Jared是正确的-不进行一些操作就无法直接绑定。以下是使用LINQ数据集扩展检索字段作为自动完成源的示例:

DataTable dtPosts = new DataTable();
using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["StackOverflow"].ConnectionString))
{
    conn.Open();
    using (SqlDataAdapter adapt = new SqlDataAdapter("SELECT TOP 100 Id, Title, Body, CreationDate FROM Posts WHERE Title IS NOT NULL ORDER BY Id", conn))
    {
        adapt.SelectCommand.CommandTimeout = 120;
        adapt.Fill(dtPosts);
    }
}

//use LINQ method syntax to pull the Title field from a DT into a string array...
string[] postSource = dtPosts
                    .AsEnumerable()
                    .Select<System.Data.DataRow, String>(x => x.Field<String>("Title"))
                    .ToArray();

var source = new AutoCompleteStringCollection();
source.AddRange(postSource);
textBox1.AutoCompleteCustomSource = source;
textBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
textBox1.AutoCompleteSource = AutoCompleteSource.CustomSource;

我想你已经知道你的答案了,但是对于回答这个问题的人来说,答案是否定的。如果你有疑问,请参阅支持的选项

当涉及到在Winforms中自动完成自定义数据时,我们使用的选项只能获取或设置一个

现在,您可以通过使用所需的查询和方法从数据库获取记录来填充DataTable,然后通过迭代DataTable的元素将这些记录添加到StringCollection。下面是一个简单的例子:


谢谢你的回答。。。但对我来说,理解你的代码似乎太复杂了。。。我刚开始编程,我选择C语言学习。我还不知道如何使用LINQ。@DavidHoerster那么你怎么知道从字符串数组中选择了哪一个呢?
DataTable dtPosts = new DataTable();
using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["StackOverflow"].ConnectionString))
{
    conn.Open();
    using (SqlDataAdapter adapt = new SqlDataAdapter("SELECT TOP 100 Id, Title, Body, CreationDate FROM Posts WHERE Title IS NOT NULL ORDER BY Id", conn))
    {
        adapt.SelectCommand.CommandTimeout = 120;
        adapt.Fill(dtPosts);
    }
}

//use LINQ method syntax to pull the Title field from a DT into a string array...
string[] postSource = dtPosts
                    .AsEnumerable()
                    .Select<System.Data.DataRow, String>(x => x.Field<String>("Title"))
                    .ToArray();

var source = new AutoCompleteStringCollection();
source.AddRange(postSource);
textBox1.AutoCompleteCustomSource = source;
textBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
textBox1.AutoCompleteSource = AutoCompleteSource.CustomSource;
textBox1.AutoCompleteCustomSource = LoadAutoComplete(); //this method is below
textBox1.AutoCompleteMode = AutoCompleteMode.Suggest;
textBox1.AutoCompleteSource = AutoCompleteSource.CustomSource;


public static AutoCompleteStringCollection LoadAutoComplete()
{
   DataTable dt = LoadDataTable(); //suppose this method returns a DataTable with fetched records from database.
   AutoCompleteStringCollection stringCol = new AutoCompleteStringCollection();
   foreach (DataRow row in dt.Rows)
   {
      stringCol.Add(Convert.ToString(row[0]));
   }
   return stringCol; //return the string collection with added records
}