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++;
}
}
}