簡體   English   中英

防止KeyDown事件處理到下一個表單

[英]Prevent KeyDown event from processing to next form

嗨,我在C#應用程序中有一個表格。 在此表單上,我捕獲了一個KeyDown事件Alt + U,它將打開第二個表單。 在第二種形式中,我有一個帶快捷鍵Alt + U的toolStripButton(用來打開表單),它可以打印文檔。 現在,我的問題是打開第二個表單時,它將自動觸發單擊toolstripbutton的事件,因為它具有與我用來打開表單相同的快捷鍵。 如何防止這種情況發生。

問候約翰

這不能回答您的問題,但是您確實應該考慮為這兩個截然不同的動作制作兩個不同的快捷鍵。 具有兩個完全相同的快捷鍵來執行兩個完全不同的操作會使IMO感到困惑。

不過,要回答您的問題,我將在第二種形式上擁有一些屬性,例如“ ShouldRaise”或其他東西,並且僅當該標志為true時才以第二種形式引發Alt + U事件。 首先將其設置為false,然后在第一種形式的KeyUp中將其設置為true。

將一個快捷方式更改為其他內容不僅容易嗎? 我同意BFree,因為它不是最好的設計,它具有2個完全不同的功能的相同快捷方式。 所有快捷鍵/加速鍵均應唯一。

為什么不將表單頁面的快捷方式更改為以下內容:

Ctrl +向右(轉到下一頁)Ctrl +向左(轉到上一頁)

在第二種形式上,您實際上有ToolStripMenuItem嗎? (ToolStripButton不具有ShortcutKeys屬性)。

當用戶在父表單上按Alt-U時,您是否實例化一個新表單?

您是否在打印文檔的處理程序中檢查了sender對象,以查看它是否是父表單?

似乎無法重現您的問題; 稍微解釋會有所幫助。

另一個簡單的解決方案是從事件偵聽器中檢查一下您所處的形式。 您可以只在第二個表單內的事件處理程序中返回。

同樣,這不是最優雅的解決方案,但應該是一個不錯的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM