【问题标题】:BindingNavigator events not raised未引发 BindingNavigator 事件
【发布时间】:2018-04-05 03:11:21
【问题描述】:

我有一个“奇怪”的情况。 我有一个带有绑定源和绑定导航器的表单。 在本例中,我有 161 条记录(通过 EF6)要显示。 控件的数据绑定工作得很好。 但我发现绑定导航器的预期事件不会始终如一地发生。然后他们安定下来。

我有事件处理程序(除了默认事件处理程序,但当我删除默认事件处理程序时也会发生同样的事情)

我将绑定源设置为导航器,并引发“位置更改”事件(如我所料)

单击任何“移动”按钮或编辑位置字段将导致: 大约 4 次中有 3 次没有引发事件(不是项目单击事件,不是绑定源位置更改)。 然后事件引发,所有预期的导航都会发生,然后重复。

但它似乎不是永久性的,因为过了一段时间几乎所有的记录都有导航都开始正常工作。 无论是否连接调试器,都会发生这种情况。

我注意到的另一件事是,当它失败时,任务栏中的图标会闪烁一次。

它在我的任何处理程序代码中都没有,因为它永远不会进入我的代码。 它可能是一个属性设置。 这不是异常,因为即使使用“所有异常中断”,也不会报告异常。

【问题讨论】:

  • 请提供MCVE。目前,尚不清楚该问题是否与 Windows 窗体有关。
  • @defaultlocale 等我旅行回来后,我会努力解决这个问题。但它是一个winforms 内置控件。我使用 ILSpy 创建了一个项目内副本,因此我可以逐步完成它,而且它甚至没有触发 ToolStripButton 点击​​事件,所以它可能是消息泵/焦点/激活驱动的。

标签: winforms data-binding bindingsource bindingnavigator


【解决方案1】:

当您谈论“移动”按钮时,我认为您是指BindingNavigator 上的下一个/上一个记录导航按钮。这些按钮不是成熟的 Windows 控件,而是“轻量级”控件。因为这个,我过去看到过问题。

虽然我没有记忆中的所有细节,但这与它们不会像常规 Windows 控件那样将焦点从其他控件中窃取这一事实有关,这导致某些事件没有被引发。

我建议您创建自己的导航按钮,这是我最终在所有 Windows 窗体项目中所做的。然后这些常规按钮可以调用BindingSource 方法,例如MoveNext 等。

【讨论】:

  • 谢谢。我开始怀疑是这种情况。嗯,至少 ILSpy 意味着我可以从中复制大部分重要代码。
猜你喜欢
  • 2011-06-05
  • 1970-01-01
  • 2023-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-03
相关资源
最近更新 更多