2011-12-02 78 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 –

相關問題