Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.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# 关闭对话框窗体时刷新winform ComboBox数据源_C#_Winforms_Combobox - Fatal编程技术网

C# 关闭对话框窗体时刷新winform ComboBox数据源

C# 关闭对话框窗体时刷新winform ComboBox数据源,c#,winforms,combobox,C#,Winforms,Combobox,我有一个设置表单,上面有一个组合框,我用数据库中的分区填充它。在这个组合框旁边有一个“新建”按钮,用户可以点击它来创建一个新的分区 单击“新建”按钮时,将弹出一个对话框表单供用户输入并保存新分区。我想在对话框窗体关闭时刷新设置窗体上的组合框,但我似乎无法获得它 我创建了一个函数来填充组合框: private void fillDivisionsCmboBox() { Divisions divs = new Divisions(); Dat

我有一个设置表单,上面有一个组合框,我用数据库中的分区填充它。在这个组合框旁边有一个“新建”按钮,用户可以点击它来创建一个新的分区

单击“新建”按钮时,将弹出一个对话框表单供用户输入并保存新分区。我想在对话框窗体关闭时刷新设置窗体上的组合框,但我似乎无法获得它

我创建了一个函数来填充组合框:

        private void fillDivisionsCmboBox()
    {
        Divisions divs = new Divisions();
        DataTable dt = new DataTable();

        //FILL DIVISIONS DROP DOWN
        dt = divs.GetActiveDivisions();

        if (divs.Error != null)
        {
            MessageBox.Show("Error: " + divs.Error,
                "Error",
                MessageBoxButtons.OK,
                MessageBoxIcon.Error,
                MessageBoxDefaultButton.Button1);
        }
        else if (dt.Rows.Count <= 0)
        {
            MessageBox.Show("Error: No Divisions returned. Please create divisions with the \"New\" button.",
                "Divisions: Empty Reuturn",
                MessageBoxButtons.OK,
                MessageBoxIcon.Exclamation,
                MessageBoxDefaultButton.Button1);
        }
        else
        {
            this.cmbo_divisions.DataSource = dt;
            this.cmbo_divisions.DisplayMember = "title";
            this.cmbo_divisions.ValueMember = "ID";
            this.cmbo_divisions.SelectedIndex = -1;
            this.cmbo_divisions.Text = "Select a Division";

            //HANDLE UI VISIBILITY
            this.grp_divSettings.Visible = false;
        }
    }
在这里,我通过“新建”按钮调用对话框窗体:

        private void btn_new_division_Click(object sender, EventArgs e)
    {
        Form newdiv = new frm_new_division();
        newdiv.ShowDialog();
    }
我这样做是希望它在对话框关闭时刷新组合框,但在对话框关闭时不会触发激活的事件。。。如何在关闭对话框时刷新组合框


感谢您抽出时间

当您将第二个窗体显示为模式对话框时,第一个窗体中的代码执行会暂停

因此,只需在显示第二个表单后立即调用
fillDivisionsCmboBox()
,而不是在Form.Activated事件中调用,它将在用户关闭表单时运行

private void btn_new_division_Click(object sender, EventArgs e)
{
    using (var newdiv = new frm_new_division())
        newdiv.ShowDialog();

    fillDivisionsCmboBox();
}

我现在就可以添加它。在创建新分区之前,刷新会不会导致新分区没有显示在组合框中?啊,好的,我刚刚看到你的编辑。。。非常有趣,谢谢!我马上就去试试。效果很好-谢谢!我会接受你的回答,只要选项可用。
private void btn_new_division_Click(object sender, EventArgs e)
{
    using (var newdiv = new frm_new_division())
        newdiv.ShowDialog();

    fillDivisionsCmboBox();
}