[ad_1]
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
それがあなたを助けることを願っています。
[ad_2]
コメント