【解決方法】ContextMenuStrip への垂直スクロールの追加


ContextMenuStrip で MSDN のドキュメントを読んでいて、過去 2 日間インターネットで ContextMenuStrip (winForm C#) に垂直スクロールバーを追加する方法を調べていましたが、何も見つかりません。 これがどのように行われるか知っている人はいますか? 誰かが私を正しい方向に向けてください。

前もって感謝します、
-と

解決策 1

実用的な解決策:
1. 登録する マウスホイール開いた閉まっている あなたのイベント ツールストリップドロップダウン フォームの Load イベントで

C#
dropDown.Opened+= new EventHandler(dropDown_Opened);
dropDown.Closed+= new ToolStripDropDownClosedEventHandler(dropDown_Closed);
dropDown.MouseWheel+= new MouseEventHandler(dropDown_MouseWheel);

2. キーの押下をシミュレートする Keyboard クラスのコードを追加します。

C#
public static class Keyboard
{
     [System.Runtime.InteropServices.DllImport("user32.dll")]
     static extern uint keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);
     const byte VK_UP = 0x26; // Arrow Up key
     const byte VK_DOWN = 0x28; // Arrow Down key
     const int KEYEVENTF_EXTENDEDKEY = 0x0001; //Key down flag, the key is going to be pressed
     const int KEYEVENTF_KEYUP = 0x0002; //Key up flag, the key is going to be released
     public static void KeyDown()
     {
         keybd_event(VK_DOWN, 0, KEYEVENTF_EXTENDEDKEY, 0);
         keybd_event(VK_DOWN, 0, KEYEVENTF_KEYUP, 0);
     }
     public static void KeyUp()
     {
        keybd_event(VK_UP, 0, KEYEVENTF_EXTENDEDKEY, 0);
        keybd_event(VK_UP, 0, KEYEVENTF_KEYUP, 0);
     }
}

3. のコードを追加します マウスホイール開いた閉まっている イベント:

C#
bool IsMenuStripOpen  = false;
void dropDown_MouseWheel(object sender, MouseEventArgs e)
{
    if (IsMenuStripOpen)
    {
        if (e.Delta > 0)
        {
            Keyboard.KeyUp();
        }
        else
        {
            Keyboard.KeyDown();
        }
    }
}
void dropDown_Closed(object sender, ToolStripDropDownClosedEventArgs e)
{
    IsMenuStripOpen = false;
}
void dropDown_Opened(object sender, EventArgs e)
{
    IsMenuStripOpen = true;
}

4. 項目 1 のすべてのシステムのグローバル機能を作成する

C#
 void dropDownMenuScrollWheel(ToolStripDropDown dropDown)
 {
     dropDown.Opened +=new EventHandler(dropDown_Opened);
     dropDown.Closed +=new ToolStripDropDownClosedEventHandler(dropDown_Closed);
     dropDown.MouseWheel += new MouseEventHandler(dropDown_MouseWheel);
}

ToolStripDropDown は ToolStripMenuItem.DropDown

それがあなたを助けることを願っています。

コメント

タイトルとURLをコピーしました