2011-12-02 58 views
1

我遇到了一个奇怪的问题,似乎必须追究以下根本原因。 环境C#(.NET 2.0):如何禁用模式对话框按键事件的过滤

我的代码使用某个供应商的框架,并一次打开模态对话框。看起来该框架正在过滤应用程序的“输入”按键(可能通过实现IMessageFilter)。因此,通过按下“确定”按钮关闭对话框导致奇怪的行为 - 通过鼠标点击“确定”关闭工作正常。 不幸的是,更改框架的代码不是一个选项。所以我想禁用该框架在我的对话框中注意“Enter”(可能是“ESC”)按键。有谁知道这可以做到吗?

编辑:

我 “解决” 问题。请参阅下面的接受答案。

+1

是什么让你觉得它是'IMessageFilter'?您使用“可能”使我认为在寻求解决方案之前您需要做更多的诊断。 –

+0

我没有访问框架的源代码,所以我有点小心我的说法。不过,我知道,按下后在我的对话框中输入,框架会调用通常在UI中按下“enter”时调用的另一部分代码。 –

+0

这里最好的做法是发布你的答案,而不是用答案编辑问题。 – LarsTech

回答

1

我“解决”了这个问题。以下是未来参考的解决方案:将Form's(它是在模式对话框中创建的)FormBorderStyle属性设置为FormBorderStyle.FixedDialog解决了问题。是的,这是Cargo-Cult-Programming的典型案例,但经过彻底测试后,修复工作可靠。

-1

制作一个JavaScript文件,该文件在被按下的输入键上键入,让它在您的模式上执行OK事件。只要确保您的JavaScript高于应用程序中的其他JavaScript,就应该先触发。

+0

.NET WinForms应用程序 - 不涉及Javascript –