Показать флажок для строки контекстного меню или контекстного меню кнопки

Я разрабатываю функцию регистрации, в которой пользователь может выбрать, какое событие он хочет регистрировать. При нажатии кнопки я показываю такой тип меню: Контекстное меню при нажатии кнопки

Пользователь может выбрать несколько событий, поэтому мне нужно показывать «Галочку» напротив выбранной опции, когда пользователь нажимает на нее.

Я не могу найти какие-либо параметры, такие как «Проверено» или «CheckOnClick», как указано в этот вопрос.

Я пробовал использовать ContextMenu и ContextMenuStrips, но не смог установить флажки. Какие-либо предложения??


person Swanand    schedule 13.09.2012    source источник
comment
Если мой ответ поможет вам, не могли бы вы принять его как правильный ответ для будущих посетителей. Спасибо.   -  person Michael Mankus    schedule 25.09.2012


Ответы (6)


Не вижу вашего кода, поэтому я не знаю, как вы создаете это меню. Но в самых общих чертах вот как вы получаете доступ к свойству Checked.

((ToolStripMenuItem)contextMenuStrip.Items[0]).Checked = true; //false;
((ToolStripMenuItem)contextMenuStrip.Items[1]).Checked = true; //false;
((ToolStripMenuItem)contextMenuStrip.Items[2]).Checked = true; //false;

Вы можете присвоить им значение true или false. Если вы назвали свои ToolStripItems, вы можете получить к ним доступ напрямую, а не переходить к массиву Items.

contextMenuStrip.event1.Checked = true; //false;

Как видите, я использую ContextMenuStrip.

person Michael Mankus    schedule 19.09.2012
comment
Но это не похоже на флажок в пользовательском интерфейсе ?! только действовать как? - person Stav Bodik; 14.07.2016
comment
Я добавлю, что для свойства ShowCheckMargin должно быть установлено значение true, как сказано в ответе ниже. - person Russell; 03.03.2017

Измените свойство CheckOnClick на True.

введите описание изображения здесь

person WeSam Abdallah    schedule 22.03.2017

Чтобы это работало визуально, необходимо убедиться, что свойство ShowCheckMargin включено. В противном случае свойство ".Checked" ничего не сделает.

person Dave    schedule 03.06.2016

Хотя вы можете использовать:

((ToolStripMenuItem)contextMenuStrip.Items[0]).Checked = true; //false;

это может быть опасно, потому что позже вы можете изменить порядок пунктов меню, и тогда код не будет совпадать.

Вместо этого в конструкторе щелкните меню, затем элемент (например, Event1), чтобы просмотреть свойства, и установите для элемента Модификаторы значение Public или < strong> Internal. Затем в своем коде вы можете ввести имя элемента и установить проверку:

event1_ToolStripMenuItem.Checked = true; //false;

Примечание: вам не нужно вводить название полосы контекстного меню. Просто название предмета.

person AORD    schedule 12.06.2015

Если вы не видите галочки, а прямоугольник фокуса частично перекрывает текст ToolStripMenuItem, тогда установка ImageScaling на None может помочь (в моем случае то, что казалось прямоугольником фокуса, на самом деле было очень широкой галочкой, перекрывающей текст).

person wvd_vegt    schedule 11.05.2020

вам может потребоваться установить свойство Checked в событии открытия.

person Chengting    schedule 04.10.2019