关闭对话框表格

时间:2015-05-13 12:09:31

标签: c# winforms combobox

我有一个设置表单,其中有一个组合框,我用数据库中的分区填充。在这个组合框旁边有一个" new"按钮,用户可以单击以创建新的部门。

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

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

        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;
        }
    }

我调用设置表单的Activated事件:

    private void frm_settings_Activated(object sender, EventArgs e)
    {
        fillDivisionsCmboBox();
    }

在这里,我从新按钮调用对话框表单:

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

我这样做是为了希望在关闭对话框时刷新组合框,但是当关闭对话框时没有触发激活的事件...如何刷新组合关闭对话框的方框?

感谢您的时间

1 个答案:

答案 0 :(得分:1)

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

因此,只需在显示第二个表单后立即调用fillDivisionsCmboBox(),而不是在Form.Activated事件中调用private void btn_new_division_Click(object sender, EventArgs e) { using (var newdiv = new frm_new_division()) newdiv.ShowDialog(); fillDivisionsCmboBox(); } ,并在用户关闭表单时运行。

YAML::Syck