当我查找它时,它们将其列为具有.Checked
属性.但是在Visual Studio和msdn上,它都没有列出任何Checked
属性的孩子.
ContextMenuStrip menu = new ContextMenuStrip ( );
var menuItem = menu.Items.Add ( "CheckedItem" );
//menuItem.Checked?
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?
我有一个ToolStrip
多个ToolStripDropDownButton
s,每个都有一套DropDownItems
.
当用户单击DropDownItem时,将显示复选标记.
默认情况下,可以单击多个项目,因此会出现多个复选标记.
我要做的是当用户点击一个DropDownItem时,应该取消选中其他已检查的项目.换句话说,DropDown列表中应始终只有一个已检查项.
我已经讨论了一段时间,但我无法弄清楚如何保留当前检查的项目,同时取消选中其他项目.
下面是我现在的代码.
private void subietm1ToolStripMenuItem_Click(object sender, EventArgs e)
{
UncheckOtherToolStripMenuItems(sender);
}
public void UncheckOtherToolStripMenuItems(object selectedMenuItem)
{
List<ToolStripDropDownButton> dropdownButtons = new List<ToolStripDropDownButton>();
foreach (ToolStripItem item in toolStrip1.Items)
{
if (item is ToolStripDropDownButton)
{
dropdownButtons.Add((ToolStripDropDownButton)item);
}
}
foreach (ToolStripDropDownButton btn in dropdownButtons)
{
foreach (ToolStripMenuItem d in btn.DropDownItems)
{
if (d.Checked)
d.CheckState = CheckState.Unchecked;
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果有人能够对此有所了解,或者告诉我一个简单的方法,我将不胜感激.
谢谢.
您好我有一个带有"收藏夹"菜单的ToolStripMenu,我想在运行时在WinForms应用程序中添加子项.我有一个datagridview,我右键单击以显示具有"添加到收藏夹"选项的上下文菜单.当该事件被触发时,我想使用datagriview中的所选行中的一些文本添加一个项目(我知道该怎么做)到这个收藏夹菜单.棘手的部分是我需要为我的newlyCreatedToolStripMenuItem_Click
事件创建代码.我将在稍后确定如何保存我的收藏夹列表.
所以我们要去:
右键单击datagridview
"约翰史密斯"行
从中选择"添加到收藏夹" ContextMenu
收藏夹ToolStripMenu
中添加了一个新项目,内容为"John Smith"
单击"John Smith" ToopStripMenuItem
会触发一个动作(例如在daragridview行中选择该行等)
有什么好的开始想法?
在屏幕截图中,我用绿色矩形标记了空白空间,我希望在ToolStripMenuItem中左右空间大小相等,但右侧有更大的空白区域,我无法删除.
代码:
private void UpdateWorkflowsMenu()
{
((ToolStripDropDownMenu)tsddbWorkflows.DropDown).ShowImageMargin = false;
tsddbWorkflows.DropDownItems.Clear();
Program.HotkeyManager.Hotkeys.ForEach<HotkeySettings>(x =>
{
if (x.TaskSettings.Job != HotkeyType.None && (!Program.Settings.WorkflowsOnlyShowEdited || !x.TaskSettings.IsUsingDefaultSettings))
{
ToolStripMenuItem tsmi = new ToolStripMenuItem(x.TaskSettings.Description);
if (x.HotkeyInfo.IsValidHotkey) tsmi.ShortcutKeyDisplayString = " " + x.HotkeyInfo.ToString();
tsmi.Click += (sender, e) => HandleTask(x.TaskSettings);
tsddbWorkflows.DropDownItems.Add(tsmi);
}
});
tsddbWorkflows.Visible = tsddbWorkflows.DropDownItems.Count > 0;
}
Run Code Online (Sandbox Code Playgroud) 我有一些包含许多菜单项的菜单。鼠标滚轮不会滚动它们。我必须使用键盘箭头或单击顶部和底部的箭头。是否可以使用鼠标滚轮滚动工具条菜单项?谢谢
我正在尝试通过使用Option Strict On
. 我设法清除了除此之外的所有错误。
我正在使用 ToolStrip 的 Tag 属性获取一些文本信息。单击 ToolStrip,我需要记住字符串中 Tag 的值并更改该 Tag 的值。
如何将Object {String} sender.tag 转换为String以及String myString 和Object {String}?
Private Sub ToolStrip_ItemClicked(sender As Object, e As ToolStripItemClickedEventArgs) Handles ToolStrip.ItemClicked
Dim myString As String = sender.tag
sender.tag = "It is selected"
'more code...
End Sub
Run Code Online (Sandbox Code Playgroud)
编辑:在此处查看代码相关部分的屏幕截图:
我有一个带有上下文菜单的工具条和一个带有click事件的工具条按钮.最初我尝试将上下文菜单分配给按钮本身,但在其属性中找不到上下文菜单.所以我将上下文菜单分配给了工具条.现在,只要我右键单击上下文菜单的按钮,就会触发按钮单击事件.我想检查点击了哪个鼠标按钮,所以我厌倦了将事件参数转换为mouseeventargs:
if (((MouseEventArgs)e).Button != MouseButtons.Left) return;
Run Code Online (Sandbox Code Playgroud)
但我有一个例外,我不能做这个演员.我可以为按钮指定上下文菜单或检测单击哪个鼠标按钮吗?谢谢