简体   繁体   English

如何在toolstripmenuitem中查看水平滚动

[英]How to view Horizontal scroll in the toolstripmenuitem

I have created a toolstipmenuitem in which i added a lot of toolstripmenuitems as sub menus.我创建了一个 toolstipmenuitem,其中我添加了很多 toolstripmenuitems 作为子菜单。 And then i restricted the maximum size of the toolstripmenuitem which results in:然后我限制了 toolstripmenuitem 的最大大小,这导致:

在此处输入图像描述

Vertical scrolling automatically becomes enabled as shown in the image.如镜像所显示,垂直滚动自动地变得启用。

But I need a horizontal scrolling.但我需要水平滚动。 Is there any way to achieve this?有什么办法可以做到这一点?

A working solution:一个可行的解决方案:

  1. Register for MouseWheel , Opened , Closed event of your ToolStripDropDown in the Load event of the form在窗体的 Load 事件中注册ToolStripDropDownMouseWheelOpenedClosed事件
    dropDown.Opened+= new EventHandler(dropDown_Opened);
    dropDown.Closed+= new ToolStripDropDownClosedEventHandler(dropDown_Closed);
    dropDown.MouseWheel+= new MouseEventHandler(dropDown_MouseWheel);
  1. Add the code for Keyboard class which simulate key presses添加模拟按键的键盘 class 的代码
    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);
         }
    }           
  1. Add the code for Opened , Closed , MouseWheel events:添加OpenedClosedMouseWheel事件的代码:
    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;
    }
  1. Create global functionality for all systems for item 1为项目 1 的所有系统创建全局功能
    void dropDownMenuScrollWheel(ToolStripDropDown dropDown)
    {
        dropDown.Opened +=new EventHandler(dropDown_Opened);
        dropDown.Closed +=new ToolStripDropDownClosedEventHandler(dropDown_Closed);
        dropDown.MouseWheel += new MouseEventHandler(dropDown_MouseWheel);
   }

ToolStripDropDown is ToolStripMenuItem.DropDown ToolStripDropDown 是ToolStripMenuItem.DropDown

Hope it help you.希望对你有帮助。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM