我有一个设置表单,上面有一个组合框,用数据库中的分区填充。该组合框旁边有一个“新”按钮,用户可以单击该按钮来创建新的部门。
单击“新建”按钮后,将弹出一个对话框,供用户输入并保存新的部门。我希望对话框对话框关闭时可以刷新设置表单上的组合框,但似乎无法理解。
我创建了一个函数来填充组合框:
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();
}
我这样做是希望它在关闭对话框时会刷新组合框,但是在关闭对话框时不会触发激活的事件...如何在关闭对话框时刷新组合框盒子?
感谢您的时间
当您将第二个窗体显示为模式对话框时,第一个窗体中的代码将暂停执行。
因此,只需fillDivisionsCmboBox()
在显示第二个Form之后立即调用即可,而不是在Form.Activated事件中调用,它将在用户关闭Form时运行。
private void btn_new_division_Click(object sender, EventArgs e)
{
using (var newdiv = new frm_new_division())
newdiv.ShowDialog();
fillDivisionsCmboBox();
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句