[英]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.