Bom dia Pierre, tudo bom?
Com relação a conexão com o MySQL para criar a string de conexão sugiro você dar uma olhada no site ConnectionString, ai é só olhar a melhor opção para o banco que você estará utilizando, abaixo um exemplo:
using MySql.Data.MySqlClient;
namespace ControleDeSeriesFilmes.DAO
{
sealed class ConnectionDAO
{
private static MySqlConnection conn = null;
public static MySqlConnection getConnection() {
if (conn == null)
{
conn = new MySqlConnection("Server=localhost;Database=filmesseries;Uid=root;Pwd=root");
}
return conn;
}
}
}
Com relação a implementação do auto completar você dar uma olhada nas sugestões deste tópico. Com base nesse tópico fiz uma sugestão:
No evento do ComboBox TextChanged
HandleTextChanged(comboBox1.Text);
Neste Evento por sua vez, vou adicionando o retorno de uma consulta:
private void HandleTextChanged(string busca)
{
var txt = comboBox1.Text;
var list = GetNomes(busca);// Consulta os nomes
if (list.Count() > 0)
{
comboBox1.DataSource = list.ToList();
comboBox1.SelectedIndex = 0;
var sText = comboBox1.Items[0].ToString();
comboBox1.SelectionStart = txt.Length;
comboBox1.SelectionLength = sText.Length - txt.Length;
comboBox1.DroppedDown = true;
return;
}
else
{
comboBox1.DroppedDown = false;
comboBox1.SelectionStart = txt.Length;
}
}
O método que retorna a lista de nomes:
private List<string> GetNomes(string busca)
{
List<string> lista = new List<string>();
using (var conn = MyConnection.getConnection())
{
try
{
conn.Open();
var comandoSQL = new StringBuilder();
comandoSQL.Append("SELECT nome FROM cliente WHERE nome LIKE @busca ");// consulta com Like
MySqlCommand comando = new MySqlCommand(comandoSQL.ToString(), conn);
comando.Parameters.AddWithValue("@busca","%"+busca+"%");
MySqlDataReader reader = comando.ExecuteReader();
if (reader.HasRows == false)
{
lista = null;
}
else
{
while (reader.Read())
{
lista.Add(reader["nome"].ToString());
}
}
}
catch (Exception ex)
{
MessageBox.Show("Mensagem: " + ex.Message);
}
}
return lista;
}
Nesse exemplo as "sugestões" estão vindas do banco e é somente um código para ajudar a pensar em uma solução, pq o mesmo o código está meio macarrônico, sem padrão e boas práticas, mas espero que possa se de alguma ajuda.