8

我正在设计一个日志记录功能,用户可以在其中选择他想要记录的事件。单击按钮时,我正在显示此类菜单: 单击按钮上的上下文菜单

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

我找不到此问题中提到的任何选项,例如“Checked”或“CheckOnClick” 。

我尝试使用 ContextMenu 和 ContextMenuStrips 但无法实现复选框。有什么建议么??

4

6 回答 6

12

看不到您的任何代码,所以我不知道您是如何创建此菜单的。但总的来说,这是您访问该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.

于 2012-09-19T14:42:28.010 回答
6

将属性CheckOnClick更改为True

在此处输入图像描述

于 2017-03-22T22:00:13.730 回答
4

为了使其可视化,您需要确保“ShowCheckMargin”属性为 ON。否则,“.Checked”属性将默默地什么都不做。

于 2016-06-03T16:28:22.170 回答
2

虽然您可以使用:

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

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

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

event1_ToolStripMenuItem.Checked = true; //false;

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

于 2015-06-12T03:16:02.907 回答
1

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

于 2020-05-11T11:07:28.597 回答
0

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

于 2019-10-04T14:41:05.550 回答