我有一个设置表单,其中有一个组合框,我用数据库中的分区填充。在这个组合框旁边有一个" 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();
}
我这样做是为了希望在关闭对话框时刷新组合框,但是当关闭对话框时没有触发激活的事件...如何刷新组合关闭对话框的方框?
感谢您的时间
答案 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