is there any way to add an extra item to the default WinForms TextBox context menu without creating my own?
Asked
Active
Viewed 3,247 times
3 Answers
2
Subclass TextBox (derive from it) or native handle (with NativeWindow), and then override window procedure as follows:
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);
}

Demidov
- 21
- 2
1
I think you should override WndProc and capture the messages that the textbox receive.

mrtaikandi
- 6,753
- 16
- 62
- 93
1
It is possible, but complicated. I suggest you implement your own menu using "modern" ContextMenuStrip class instead of standard ContextMenu.

arbiter
- 9,447
- 1
- 32
- 43