【问题标题】:How to refresh the DataSource of a ComboBox when database is updated?更新数据库时如何刷新 ComboBox 的 DataSource?
【发布时间】:2014-07-11 01:33:47
【问题描述】:

我有一个带有一些数据源的组合框。有些名称不在列表中,当我通过显示另一个表单添加它们时,我的 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";
}

【问题讨论】:

  • 数据库中的实际数据是如何更新的?不清楚你从哪里得到DialogResult,或者这些事情发生的顺序。

标签: c# winforms combobox


【解决方案1】:

您无需等待另一个表单关闭,因此在显示AddClient 表单后会立即评估if 语句。 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 表中。

【讨论】:

    【解决方案2】:

    按照格兰特的回答,在更改为 showdialog 后,您还需要检查 ob 的 DialogResult 属性,而不是您当前所在表单的 DialogResult。

    如果(ob.DialogResult == ...)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-05
      • 2016-01-12
      • 1970-01-01
      • 2011-11-14
      • 2012-01-03
      • 1970-01-01
      • 1970-01-01
      • 2016-10-22
      相关资源
      最近更新 更多