【问题标题】:C#.NET mnemonics unexpected behaviourC#.NET 助记符意外行为
【发布时间】:2013-03-14 06:38:51
【问题描述】:

我的 Windows 应用程序中只有几个按钮具有助记符。现在,如果我按下多个键,按钮点击的事件会被触发,因为我使用了助记符。 但是行为并不像预期的那样,因为第二个按钮事件处理程序在第一个按钮事件处理程序完成执行之前被执行,而且我已经编写了我的代码,在第一个按钮的事件处理程序中我禁用了我的第二个按钮,仍然是第二个按钮事件处理程序正在执行。这里的问题是由于助记符。请建议我尽快处理助记符的更好方法。 提前致谢。

【问题讨论】:

  • 请给我们一些代码,这样我们就不用胡乱猜测了。
  • 嗨,如果可能的话,你能建议我一种更好的方法或任何处理助记符的 COM 组件吗,我找到了一个,即 IKeyBoardinputsink 接口,但它存在于 .NET 框架 3.0 中,我正在使用 . netframework 2.0,如果可能的话,请向我建议任何解决方法或任何参考,它们将为我提供处理此问题的界面
  • 没有。 .NET 的助记符实现本身并没有什么问题,而且几乎可以肯定问题出在您的应用程序逻辑中。
  • 嗨,我正在同时按下按键。因此,出现了问题,第二个按钮的助记符没有意识到它不应该执行事件处理程序,因为我之前已经禁用了它。 .

标签: c# behavior mnemonics


【解决方案1】:

如果您的逻辑与按钮相关联,请更改它。让您的按钮仅操作实现您的逻辑的对象。然后您可以在此对象中检查是否允许请求的操作(即之前的操作是否已完成。

或者,您可以在运行时禁用按钮,然后在 when.finished 时重新启用。

【讨论】:

  • 嗨,我无法更改代码..但如果可能的话,您能否建议我一种更好的方法或任何处理助记符的 COM 组件,我找到了一个,即 IKeyBoardinputsink 接口,但它存在于 .NET 中框架 3.0,我正在使用 .netframework 2.0,如果可能的话,请向我建议任何解决方法或任何参考,它们将为我提供处理此问题的接口。
  • IKeyBoardinputsink 接口是 System.Windows.Interop 命名空间中存在的接口....但在 .NET 框架 2.0 中,此引用不存在
  • 你的软件有bug,应用一些COM接口并不能神奇地解决这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多