伊莉討論區

標題: 右鍵選單的一些小疑問 [打印本頁]

作者: 10402    時間: 2016-4-23 05:18 PM     標題: 右鍵選單的一些小疑問

我想請問,再用鍵盤的左右操作時,當我向右時打開另一層的選單,再按一次向右,他就會自動關閉,請問有辦法再按一次向右不會讓他自動關閉,就讓他卡在那邊可以嗎?


作者: sheauren    時間: 2016-4-24 09:00 PM

這問題蠻有趣的,你沒提到我之前都沒發現過,
不過我提供一個比較直接解決問題的方式。
關閉原因如果是鍵盤&按右鍵 那就不要關閉

[DllImport("user32.dll")]
public static extern short GetAsyncKeyState(int vKey);


private void contextMenuStrip1_Closing(object sender, ToolStripDropDownClosingEventArgs e) {
            switch (e.CloseReason) {
                case ToolStripDropDownCloseReason.Keyboard: {
                        if (GetAsyncKeyState((int)Keys.Right) < 0) {
                            e.Cancel = true;
                        }
                    }
                    break;
            }
        }
作者: 10402    時間: 2016-4-25 09:27 AM

sheauren 發表於 2016-4-24 09:00 PM
這問題蠻有趣的,你沒提到我之前都沒發現過,
不過我提供一個比較直接解決問題的方式。
關閉原因如果是鍵盤 ...

感謝大大 第一層是不能關了 可是第二層 還是會關閉  我在第二層的CLOSE事件 沒辦法加入CloseReason這個事件 請問還有甚麼方法嗎? 麻煩了
作者: sheauren    時間: 2016-4-25 09:22 PM

10402 發表於 2016-4-25 09:27 AM
感謝大大 第一層是不能關了 可是第二層 還是會關閉  我在第二層的CLOSE事件 沒辦法加入CloseReason這個事 ...

當測的時候是用兩層選單都沒問題
第二層按右側如果沒東西會縮回第一層
不過我是靜態的contextmenu
還是你的menu是動態產生的嗎?
不然closing event理論上只有contextmenu本身直接加上去就好,
不用每個menuitem,因為menuitem也只有closed event來不及處理了

作者: 10402    時間: 2016-4-25 09:56 PM

sheauren 發表於 2016-4-25 09:22 PM
當測的時候是用兩層選單都沒問題
第二層按右側如果沒東西會縮回第一層
不過我是靜態的contextmenu

我也是contextmenu 有辦法的話最好是可以連第二層 在按右鍵的話 不會縮回去
就像是 我們在桌面 按右鍵那種 只會卡在最後一層 所以才會想連第二層也加上去




歡迎光臨 伊莉討論區 (http://www03.eyny.com/) Powered by Discuz!