2009-08-28 2 views

ответ

1

Я думаю, вы должны переопределить WndProc и захватить сообщения, получаемые текстовым полем.

1

Возможно, но сложный. Я предлагаю вам реализовать свое собственное меню, используя «современный» класс ContextMenuStrip вместо стандартного ContextMenu.

1

Подкласс TextBox (извлечь из него) или родной ручки (с NativeWindow), а затем переопределить оконную процедуру следующим образом:

protected override void WndProc(ref Message m) 
{ 
    if (m.Msg == <your menu id>) { ... return; } 
    ... 

    if (m.Msg == 0x0093 /*WM_UAHINITMENU*/ || m.Msg == 0x0117 /*WM_INITMENUPOPUP*/ || m.Msg == 0x0116 /*WM_INITMENU*/) 
    { 
    IntPtr shortcut = m.Msg == 0x0093 ? Marshal.ReadIntPtr(m.LParam) : m.WParam; 
    // add <your menu id> to shortcut 
    ... 
    } 
    ... 
    base.WndProc(ref m); 
} 
Смежные вопросы