Отключить захват мыши кнопкой

Я создаю пользовательский ContextMenuStrip с Button в нем:

ContextMenuStrip _contextMenu = new ContextMenuStrip();
_contextMenu.Items.Add(new ToolStripMenuItem("Item"));
_contextMenu.Items.Add(new ToolStripControlHost(new Button()));

Когда я открываю это контекстное меню и навожу указатель мыши на «Элемент», оно выделяется. Но после того, как я нажал Button, а затем снова навел указатель мыши на «Элемент», он больше не выделяется. Похоже, Button ловит мышь. Как этого избежать или отменить захват после нажатия Button?


person melya    schedule 12.02.2016    source источник


Ответы (1)


Вы можете создать свой собственный класс кнопок, унаследованный от Button, и установить для ControlStyles.Selectable значение false, это предотвратит получение фокуса:

public class MyButton : Button
{
    public MyButton()
    {
        SetStyle(ControlStyles.Selectable, false);
    }
}

А затем просто используйте его вместо Button:

_contextMenu.Items.Add(new ToolStripControlHost(new MyButton()));
person Andy Korneyev    schedule 12.02.2016