[英]How to view Horizontal scroll in the toolstripmenuitem
我創建了一個 toolstipmenuitem,其中我添加了很多 toolstripmenuitems 作為子菜單。 然后我限制了 toolstripmenuitem 的最大大小,這導致:
如鏡像所顯示,垂直滾動自動地變得啟用。
但我需要水平滾動。 有什么辦法可以做到這一點?
一個可行的解決方案:
ToolStripDropDown
的MouseWheel
、 Opened
、 Closed
事件 dropDown.Opened+= new EventHandler(dropDown_Opened);
dropDown.Closed+= new ToolStripDropDownClosedEventHandler(dropDown_Closed);
dropDown.MouseWheel+= new MouseEventHandler(dropDown_MouseWheel);
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);
}
}
Opened
、 Closed
、 MouseWheel
事件的代碼: 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;
}
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
希望對你有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.