c# 组合框由估算的 mysql 数据自动填充

c# combobox automaticaly populated by inputed mysql data

我有两个用户控件。一个是输入数据,另一个有一个组合框,显示来自我的 MySQL table 的数据。

用户在第一个用户控件中键入数据并按下按钮。这会将数据添加到 MySQL table。我想立即/自动将数据添加到组合框(其他用户控件)中。

我宁愿不使用事件来完成它。如果不可能并且我必须使用事件,我应该使用什么事件?它可以是与按钮无关的事件吗?

这是从 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();
}

当前结果是我必须重新加载 windows 表单才能将新数据加载到组合框中。如果不重新加载,组合框仅显示旧数据。我已将该方法放在组合框用户控件的 InitializeComponent(); 下。

您可以在组合框本身上使用事件点击,因此只要您点击它打开下拉列表,它就会更新组合框。确保清除点击事件顶部的项目以防止重复。

如果您真的坚持没有事件,您可以使用后台工作者,但是对于您正在做的事情,为此生成一个线程似乎有点过分了。

这是最终结果的想法。

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

    LoadFromDatabase();

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