自动完成文本框,带有两个选项,可在c#winform中搜索

自动完成文本框,带有两个选项,可在c#winform中搜索,c#,winforms,autocomplete,textbox,C#,Winforms,Autocomplete,Textbox,这是我的FormLoad-事件上的代码 SqlDataReader dReader; SqlConnection conn = new SqlConnection(MyClass.GlobalConn()); conn.Open(); SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; cmd.CommandType = CommandType.Text; if (radioName.checked==true) {

这是我的
FormLoad
-事件上的代码

SqlDataReader dReader;
SqlConnection conn = new SqlConnection(MyClass.GlobalConn());
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;

if (radioName.checked==true)
{           
    cmd.CommandText = "select RTRIM(Person_name) from MyTable order by Person_name";
}
else
{
    cmd.CommandText = "select RTRIM(Person_number) from MyTable order by Person_number";
}

dReader = cmd.ExecuteReader();

if (dReader.HasRows == true)
{
    while (dReader.Read())
        namesCollection.Add(dReader[0].ToString());
}
else
{
    MessageBox.Show("Data not found");
}

dReader.Close();

tPT.AutoCompleteMode = AutoCompleteMode.Suggest;
tPT.AutoCompleteSource = AutoCompleteSource.CustomSource;
tPT.AutoCompleteCustomSource = namesCollection;
conn.Close();  
在文本框中键入时,我需要两个选项来填充自动完成文本框:

  • 名字
  • 按数字

  • 但是它不起作用。我已经在我的
    TextChanged
    -事件中尝试过这一点,但运气不好。有人能帮我吗?

    而不是使用可选的自动完成源将所有数据更新到一个源中。这不会有任何问题,因为用户不必选择选项,而是通过决定选项来输入

    SqlDataReader dReader;
    SqlConnection conn = new SqlConnection(MyClass.GlobalConn());
    conn.Open();
    SqlCommand cmd = new SqlCommand();
    cmd.Connection = conn;
    cmd.CommandType = CommandType.Text; 
    cmd.CommandText = "select RTRIM(Person_name) from MyTable order by Person_name";
    dReader = cmd.ExecuteReader();
    cmd.CommandText = "select RTRIM(Person_number) from MyTable order by Person_number";
    dReader = cmd.ExecuteReader();
    if (dReader.HasRows == true)
    {
        while (dReader.Read())
            namesCollection.Add(dReader[0].ToString());
    }
    else
    {
        MessageBox.Show("Data not found");
    }
    
    dReader.Close();
    
    tPT.AutoCompleteMode = AutoCompleteMode.Suggest;
    tPT.AutoCompleteSource = AutoCompleteSource.CustomSource;
    tPT.AutoCompleteCustomSource = namesCollection;
    conn.Close();
    
    或者如果您想使用旧的选项

    namesCollection.RemoveAll();
    SqlDataReader dReader;
    SqlConnection conn = new SqlConnection(MyClass.GlobalConn());
    conn.Open();
    SqlCommand cmd = new SqlCommand();
    cmd.Connection = conn;
    cmd.CommandType = CommandType.Text; 
    namesCollection.RemoveAll();
    if (radioName.checked==true)
    {
        cmd.CommandText = "select RTRIM(Person_name) from MyTable order by Person_name";
    }
    else
    {
        cmd.CommandText = "select RTRIM(Person_number) from MyTable order by Person_number";
    }
    dReader = cmd.ExecuteReader();
    
    if (dReader.HasRows == true)
    {
        while (dReader.Read())
            namesCollection.Add(dReader[0].ToString());
    }
    else
    {
        MessageBox.Show("Data not found");
    }
    
    dReader.Close();
    
    tPT.AutoCompleteMode = AutoCompleteMode.Suggest;
    tPT.AutoCompleteSource = AutoCompleteSource.CustomSource;
    tPT.AutoCompleteCustomSource = namesCollection;
    conn.Close();
    
    通知

    namesCollection.RemoveAll()