2013-04-30 28 views
3

在一個完整的應用程序注意到,但完全可再現的一個簡單的演示:獲取左,右箭頭鍵選擇上一個/下一個菜單,而不是一個/上一個菜單

我有包含三個MenuStrip菜單,ABC。這些菜單中的每一個都包含三項:A1/A2/.../C2/C3

當我按Alt時,第一個菜單A變爲被選中。然後我可以使用鍵來選擇其他菜單。這是應該的。

然而,當我按下打開菜單,我仍然可以使用選擇其他菜單,但順序是相反的:選擇下一個菜單,→前一個是

如果這是MenuStrip組件中的錯誤,或者如果我忘記設置必需的屬性,我無法確定本地系統是否有問題。所有這三個人對我來說似乎都很陌生,因爲在所有這三種情況下,我都希望有人已經遇到過這個問題,而且我甚至找不到其他人詢問這個問題。

如果還不清楚我要問,這裏是圖像:

Menu strip problem http://i42.tinypic.com/25uis8m.png

差點忘了說了,有沒有相關代碼。這個演示應用程序是一個全新的WinForms項目,有一個MenuStrip控件添加到它的默認窗體中,並且有三個菜單,每個菜單都有三個項目,每個項目只設置了文本。

+0

不能被我重現。 B1 - >在我的表單上轉到C1。 – LarsTech 2013-04-30 17:21:55

+0

感謝您的檢查。我想這可能會排除選項三,所以在'MenuStrip'中留下本地系統配置/錯誤的組合。 – hvd 2013-04-30 17:26:18

回答

5

這是MenuStrip中的一個錯誤/錯誤特徵。

看着ToolStripDropDown.ProcessArrowKey實現與反射器顯示箭頭鍵取反取決於SystemInformation.RightAlignedMenus。那是不對的。它應該取決於菜單條本身的從右到左模式,有時(通常?)匹配SystemInformation.RightAlignedMenus,但不總是,並且不在我的系統上。

SystemInformation.RightAlignedMenus可通過控制面板,平板電腦設置,其他,手杖,用戶配置,事實上,如果我改變它左手,我得到的菜單行爲正確。我的默認和正確的設置是右旋。由於MenuStrip組件在我的系統上不是鍵盤可用的,我將用標準的MainMenu組件代替我的使用。

更新:我實際上使用派生控件能夠提供漂亮的菜單圖像。它基於the Microsoft sample on "Visual Style Menus"。一個功能更全面的實現也適用於Windows XP和之前的版本(在這種情況下使用自繪菜單),請登錄Vista Menu with Icons in C#,但這比我需要的更加複雜。

+0

謝謝你。我只是花了最近幾個小時來解決這個問題。我無法相信在一年多之後,這個錯誤仍然沒有得到解決。 – 2014-12-05 01:56:31

相關問題