【问题标题】:WPF How to cancel user's selection in combobox?WPF 如何取消用户在组合框中的选择?
【发布时间】:2020-06-18 16:18:13
【问题描述】:

有一个包含一些项目的组合框。

如果用户想选择其他项目,我想显示一个是-否问题框来确认。

如果用户点击“否”,则更改将被取消。

我在“SelectionChanged”事件句柄中执行此操作,但如果我取消更改并选择旧项目,此事件将再次触发并再次...

  • 如何避免?
  • 如何在更改选择之前询问是/否?

【问题讨论】:

  • 查看post
  • 首先想到的是使用标志来阻止事件处理,请参阅this answer。如果你会使用 MVVM(或者至少是 bingings),那么你可以在绑定到 SelectedItem 的属性的 setter 中运行这个逻辑,这样就不会适得其反。

标签: c# wpf


【解决方案1】:

如果您不关心在真正接受更改之前显示要更改的值(通过单击“是”),您可以尝试使用 SelectionChangeCommitted 事件处理程序来处理这些更改并显示用户对话框。

【讨论】:

  • 这是一个 WPF 项目,没有 SelectionChangedCommitted 事件
  • 啊,你是对的,这仅在表单中可用。您是否尝试过 (1) 断开 EventHandler,(2) 重新设置选择,以及 (3) 重新连接 EventHandler
【解决方案2】:

如果您想在用户尝试更改后询问用户,请使用此事件处理程序SelectionChangeCommitted。 您也可以将组合框的状态更改为初始形式,只需将组合框的索引号设置为-1

 comboBox1.SelectedIndex = -1;

这样您就可以在“否”按钮的单击事件处理程序中编写上面的代码。

【讨论】:

  • 这将取消任何选择(即根本不选择任何项目),而不是恢复以前选择的项目。
  • 将索引号存储在类Form @vonludi中的局部变量中
猜你喜欢
  • 2012-12-16
  • 2012-11-23
  • 2011-12-16
  • 2014-10-09
  • 1970-01-01
  • 2013-04-19
  • 1970-01-01
  • 2021-11-16
  • 1970-01-01
相关资源
最近更新 更多