如何在更新数据库时刷新ComboBox的DataSource?

时间:2014-07-11 01:33:48

标签: c# winforms combobox

我有一个带有一些DataSource的ComboBox。有些名称不在列表中,当我通过显示另一个表单添加它们时,我没有在我的ComboBox中获取这些项目。

我希望在“客户端添加”表单关闭时显示这些项目。

我正在使用此代码:

AddClient ob = new AddClient();

ob.Show();

if (DialogResult == DialogResult.OK)
{ 
    List<AddBatteryType> btry = db.AddBatteryTypes.ToList();
    comboBoxBatteryType.DataSource = btry;
    comboBoxBatteryType.DisplayMember = "Type";
    comboBoxBatteryType.ValueMember = "Id";
}

2 个答案:

答案 0 :(得分:1)

您并未等待其他表单关闭,因此在显示if表单后会立即评估AddClient语句。 DialogResult的值为None,因此if块中的代码不会执行。

改变这个:

ob.Show();        // execution continues as soon as the second form is shown

对此:

ob.ShowDialog();  // execution stops here until the second form is closed

话虽这么说,if块内的代码根本没有引用您正在显示的表单,因此似乎没有显示它的目的。 ..除非该表单中的代码将值保存到数据库中的AddBatteryType表中。

答案 1 :(得分:0)

要使用Grant的答案,在更改为showdialog之后,您还需要检查ob的DialogResult属性,而不是当前表单的DialogResult。

if(ob.DialogResult == ...)