コード例 #1
0
        private void WmMenuChar(ref Message message)
        {
            Menu menu = contextMenu.FindMenuItem(MenuItem.FindHandle, message.LParam);

            if (contextMenu.Handle == message.LParam)
            {
                menu = contextMenu;
            }

            if (menu != null)
            {
                char key   = char.ToUpper((char)((int)message.WParam & 0x0000FFFF), CultureInfo.InvariantCulture);
                int  index = 0;
                foreach (MenuItem menuItem in menu.MenuItems)
                {
                    if ((menuItem != null) && (menuItem.OwnerDraw) && (menuItem.Mnemonic == key))
                    {
                        message.Result = (IntPtr)((NativeMethods.MNC_EXECUTE << 16) | index);
                        return;
                    }

                    if (menuItem.Visible)
                    {
                        index++;
                    }
                }
            }
        }