【问题标题】:VB.net: How do I "refresh" my comboBox?VB.net:如何“刷新”我的组合框?
【发布时间】:2011-05-13 04:57:18
【问题描述】:

我有一个由我拥有的数据库表填充的组合框。在我的表单的 Load 事件中,我将其填充为...

Me.BusinessTableAdapter.Fill(Me.BillingdbDataSet.Business)

我的问题是每当我“添加”、“编辑”或“删除”我存储的业务时,我都找不到更新我拥有的组合框的方法。每当我退出并重新打开程序时,我都可以看到更改,但希望有人能告诉我在更改发生后如何更新它。

【问题讨论】:

  • 你能不能把 Adapter.Fill 代码放到一个函数中,并在需要刷新的时候调用它。
  • 我忘了提到,当我执行“添加”和“编辑”时,它们会启动一个附加表单,然后它会返回到我的组合框表单。我也在我的“删除”按钮上尝试了你的建议,因为它保持在同一个表单上并且它不起作用。

标签: vb.net combobox


【解决方案1】:

问题是您需要实现 INotifyCollectionChanged 的​​东西。

MSDN

您可以枚举任何集合 实现 IEnumerable 界面。但是,要设置动态 绑定,以便插入或 集合中的删除更新 UI 自动,集合必须 实施 INotifyCollectionChanged 界面。这个接口暴露了 CollectionChanged 事件,一个事件 应在任何时候提出 基础集合更改。

您可以手动刷新它,但理想的情况是绑定到可观察的集合类 - http://msdn.microsoft.com/en-us/library/ms668604.aspxHTH

韦德

【讨论】:

  • 我一直在查看它,但我想因为我对 vb 还很陌生,所以我无法让它工作。可能有人有一些示例/伪代码吗?谢谢!
  • stackoverflow.com/questions/253843/… 看起来他们正在做我想要的事情,但是对于 datagridview 而不是组合框。然而,我实际上并没有像他们那样创建一个列表。我的组合框由我的 BindingSource 填充。 bindingsource 是否提供了我可以访问的列表?
【解决方案2】:

如果您使用数据集,则可以使用 dataview 类,该类会在基础数据集更改时引发事件。然后,您可以查看将它们绑定到组合框的数据,或者编写自己的更新代码并将其放入事件处理程序中,以处理列表更改时引发的事件。

【讨论】:

    猜你喜欢
    • 2013-02-25
    • 2018-05-21
    • 1970-01-01
    • 2010-11-29
    • 1970-01-01
    • 1970-01-01
    • 2011-01-04
    • 1970-01-01
    • 2011-10-03
    相关资源
    最近更新 更多