【问题标题】:Triggering event when ListBox.Item's size changesListBox.Item 大小变化时触发事件
【发布时间】:2011-03-14 12:33:30
【问题描述】:

当我的ListBox.Items.Count 更改时,我想更新/调用某些函数。除了ListBox 或者删除项目,如何触发功能?

【问题讨论】:

  • 如何添加/删除项目?你应该把那里的逻辑联系起来。
  • 我已将列表框与 AsyncBindingList 链接。更新列表框上的项目。但是不知道如何在项目计数发生变化时捕获。谢谢。
  • 应该有事件AddingNew/ListChanged,处理这些呢?
  • 你使用 WPF、WinForms、Asp.Net 吗??
  • 应用程序正在 WinForms C# 中开发

标签: c# winforms listboxitem


【解决方案1】:

您可以使用ObservableCollection 作为列表框的数据源。然后您可以为CollectionChanged 事件创建处理程序。

【讨论】:

  • 我找到了解决方案,检查我的答案
【解决方案2】:

此操作没有事件。您将需要执行以下操作之一:

  1. 创建一个线程来提取此信息并提醒您(糟透了)
  2. 覆盖列表框并公开这些事件(可以,但为什么?)
  3. 只需在列表框中添加和删除的地方添加您需要的代码(大多数人都会这样做)

真的,我认为 3 是要走的路。

【讨论】:

  • 我找到了解决方案,检查我的答案
【解决方案3】:

因为我使用的是 AsyncBindingList 并且它在后台工作线程上运行。 AsyncBindingList 连接到我的 ListBox。因此,当我的 Worker 线程完成其工作时,它将更新 AsyncBindingList 作为回报,它将更新我在表单上的 listBox。

但是在列表框中添加项目时,我正在寻找调用更新其他控件的方法。所以,最后我得到了解决方案。

解决方案是当工作线程完成它的工作时,它会调用RunWorkerCompletedEventHandler。当它通过 RunWorkerCompletedEventHandler 调用一个方法时,我触发了 Forms.Invoke 方法,该方法触发了表单类中的一个方法,该方法又更新了所有控件。

但我真的不知道这是不是最好的方法。如果你有什么建议。请张贴作为答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-08
    • 1970-01-01
    • 2011-04-02
    • 1970-01-01
    • 2015-10-19
    • 2021-10-11
    相关资源
    最近更新 更多