显示Context MenuStrip的复选框或按钮的上下文菜单

时间:2012-09-13 06:48:19

标签: c# winforms contextmenu contextmenustrip

我正在设计一个日志记录功能,用户可以在其中选择要记录的事件。 点击按钮,我显示这种类型的菜单: Context Menu on Button click

用户可以选择多个事件,因此当用户点击它时,我需要在所选选项的前面显示“复选标记”。

我无法找到this question中提及的“Checked”或“CheckOnClick”等任何选项。

我尝试使用ContextMenu和ContextMenuStrips但无法实现Checkboxes。 任何建议??

6 个答案:

答案 0 :(得分:9)

看不到任何代码,所以我不知道你是如何创建这个菜单的。但从最一般的角度来说,这是您访问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

答案 1 :(得分:4)

将属性 CheckOnClick 更改为 True

enter image description here

答案 2 :(得分:3)

为了使其在视觉上有效,您需要确保" ShowCheckMargin"财产是ON。否则" .Checked"财产将无声无息。

答案 3 :(得分:1)

虽然你可以使用:

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

这可能很危险,因为以后您可能会对菜单项重新排序,然后代码就不会匹配。

相反,在设计器中单击菜单然后单击项目(如Event1)以查看属性并将项目修饰符设置为公共内部。然后在您的代码中,您可以键入项目的名称并设置检查:

event1_ToolStripMenuItem.Checked = true; //false;

注意:您不需要输入竞争菜单条的名称。只是项目名称。

答案 4 :(得分:0)

您可能需要在Opening事件中设置Checked属性。

答案 5 :(得分:0)

如果您没有看到选中标记,但是焦点矩形部分重叠在ToolStripMenuItem文本上,那么将ImageScaling设置为None可能会有所帮助(在我的情况下,似乎焦点矩形实际上是一个很宽的选中标记与文本重叠)。