c# поле со списком автоматически заполняется введенными mysql данными - PullRequest
1 голос
/ 30 мая 2020

У меня есть два пользовательских элемента управления. Один предназначен для ввода данных, а другой имеет поле со списком, в котором отображаются данные из моей таблицы MySQL.

Использует типы данных в первом пользовательском элементе управления и нажимает кнопку. Это добавляет данные в таблицу MySQL. Я хочу немедленно / автоматически добавлять данные в поле со списком (другой пользовательский элемент управления).

Я бы предпочел не делать это с помощью события. Если это невозможно, и мне нужно использовать событие, какое событие мне следует использовать? Может ли это быть событие, не связанное с кнопкой?

Вот метод, который считывает данные из MySQL и добавляет их в поле со списком:

private void LoadFromDatabase()
{
    string query = "select name from country";
    MySqlConnection conn = new MySqlConnection(connection);
    MySqlCommand command = new MySqlCommand(query,conn);
    MySqlDataReader Read;
    conn.Open();
    Read = command.ExecuteReader();
    while(Read.Read())
    {
        metroComboBox1.Items.Add(Read.GetString("name"));
    }
    conn.Close();
}

Текущий результат: I необходимо перезагрузить форму windows, чтобы загрузить новые данные в поле со списком. Без перезагрузки в поле со списком отображаются только старые данные. Я поместил этот метод в InitializeComponent(); пользовательского элемента управления combobox.

1 Ответ

0 голосов
/ 30 мая 2020

Вы можете использовать щелчок по событию на самом поле со списком, поэтому всякий раз, когда вы щелкаете его, чтобы открыть раскрывающийся список, он будет обновлять поле со списком. Обязательно очистите элементы в верхней части события щелчка, чтобы предотвратить дублирование.

Если вы действительно настаиваете на отсутствии событий, вы можете использовать фонового рабочего, однако для того, что вы делаете, это кажется излишним чтобы создать поток только для этого.

Это идея того, как должен выглядеть окончательный результат.

private void comboBox1_Click(object sender, EventArgs e)
{
    if (comboBox1.Items.Count > 0)
        comboBox1.Items.Clear();

    LoadFromDatabase();

    comboBox1.SelectedItem = 0;
    comboBox1.Text = "Select Item";
}
...