问题标签 [toolstripmenu]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
443 浏览

c# - C# 为什么我不能在 ToolStripMenuItem 中获取带有子菜单项的菜单项?

想要创建菜单和子菜单(其中也有点击事件)但不知道如何在 DropDownItems 中插入已创建的对象? 当我插入注释代码时 - 总是只在最后一个菜单上所有子项,其他没有。

0 投票
1 回答
142 浏览

vb.net - DropDownMenuItem 检查应该取消选中其他 DropDownMenuItems

我正在运行时创建 ToolStripMenuItem 的 DropDownItems。

这工作正常。

然后,当我在运行时检查其中一个 DropDownItems 时,同一“列表”中的任何其他 DropDownItems 都会保持选中状态。相反,我只想检查一个(=最后点击的一个)。

是否有一个属性可以让我自动执行此操作,或者我是否需要通过手动取消选中所有其他 DropDropItems 来对此进行编码?

0 投票
1 回答
144 浏览

c# - 如何在 C# WinForm 中通过 toolStripMenueItem 设置用户访问权限

我想在我的项目中添加管理员可以为用户设置访问控制。
假设管理员可以选择用户名和模块名并将其保存到数据库中。
当用户成功登录后,他只能显示管理员添加的特定工具条菜单项。

但我不知道该怎么做。

我只需通过管理员添加用户凭据和模块名称。当用户尝试登录时,我将该控件名称检索到字符串类型变量中,并尝试这样做..

但令人震惊的是我如何根据数据库值定义启用或禁用 ToolStripMenuItem? 这是我的界面,特定菜单项被禁用或启用 这是我的滚动表

0 投票
1 回答
184 浏览

c# - 有没有办法知道哪个 TreeNode 在其 ContextMenuStrip 项目之一被左键单击并且项目的 CheckedState 更改后被右键单击?

2018 年 5 月 10 日更新。orhtej2 建议我的问题可能是确定使用 ContextMenuStrip 的控件是什么。这几乎是一个重复,但我的情况有一个显着的不同。有关详细信息,请参阅我修改后的问题和我的答案。

请参阅下面的代码。我的目标是更清楚地确定哪个 TreeNode 在其 ContextMenuItems 之一被左键单击后被右键单击。

现在,当我右键单击两个子节点之一时,将单击的if语句TreeView1_NodeMouseClick加载TreeNode到全局treeViewClickedNode TreeNode对象中。然后,当我左键单击两者之一时contextMenuStripChildNode ToolStripMenuItem,该DocumentActionToolStripMenuItem_CheckStateChanged方法被触发。然后我可以检查检查状态。如果选中,我可以对treeViewClickedNode TreeNode.

我的问题:有没有一种更简洁的方法来确定在其 ContextMenuStrip 项目之一被左键单击后右键单击哪个 TreeNode,即,有没有办法取消全局变量treeViewClickedNode

注意:我在设计器中做的唯一一件事就是放置treeview1在 上Form1,将其停靠到Form1并将“treeview1”设置NodeMouseClickTreeView1_NodeMouseClick

0 投票
0 回答
139 浏览

c# - 禁用 ToolStripMenuItem 突出显示而不丢失背景

所以我有一个MenuStrip和几个ToolStripMenuItems。我的两个ToolStripMenuItem组件有一个背景图像(电池图标和关机图标)。

现在我想为我设置了背景MenuStrip的元素禁用默认的鼠标悬停效果(蓝色背景) 。ToolStripMenuItem为此,我重写了OnRenderMenuItemBackground事件实现,如下所示:

并像这样使用这个自定义渲染器MenuStrip

这适用于没有设置背景图像的元素。对于设置了背景的,背景图像将不会显示。

我希望背景图像可见,如何做到这一点?

0 投票
1 回答
174 浏览

winforms - 如何修复 ToolStripContainer 中项目的顺序

我有一个ToolStripContainerwith aMenuStrip和一个ToolStripinside,都在顶部。它们在 Windows 上像往常一样排列,工具栏上方的菜单栏。现在,Windows 窗体和 DPI 缩放支持一直有点不确定。虽然在 100% 时一切看起来都很好,但我目前正在使用 110% DPI 缩放以及 ToolStripContainer 中的菜单栏和工具栏开关位置(不过,我怀疑它与更高的缩放因子相同):

在此处输入图像描述

我对为什么会发生这种情况的猜测是,即使它们是由容器排列的,设计师也将这两个控件放置在特定位置,并且通过 DPI 缩放ToolStripContainer其子项的获取位置,这与将工具栏放置在菜单栏上方是一致的,就好像有人拖动条形图并重新排列它们(毕竟这是可以交互的)。

MenuStrip除了用 a替换MainMenu之外,是否有一种简单的(ish)方法可以确保无论 DPI 缩放如何,两者的顺序都保持一致?我有大约 50 个不同的窗口以几乎相同的方式进行更改,并且还宁愿避免将额外的代码放入代码隐藏文件中¹。

到目前为止我尝试过的事情:

  • 设计器中的所有更改都以 100 % 的比例应用。
  • 更改工具栏和菜单栏的 z 顺序以尝试控制它们的顺序。这适用于面板和对接,但显然不适用于ToolStripContainer
  • 对接MenuStrip在顶部。不工作;设计器只是从代码中删除Dock = None并显示Top为默认值,但应用缩放后,它又回到Dock = None了设计器中(即使不接触Form设计器中的 ,运行时的结果也是一样的)。

¹ 这些是控件库的演示应用程序,这里的要点是保持代码干净,并且仍然提供开箱即用的良好体验。因此,将代码隐藏在没有人阅读的已经很糟糕的代码中的设计者专用解决方案将是更可取的。

0 投票
0 回答
200 浏览

c# - 如何删除 ToolStripMenuItem 的阴影?

我目前正在为我的程序创建一个菜单栏。我的问题是下拉菜单会产生阴影,如您在此处看到的那样。

在此处输入图像描述

我希望我的下拉菜单有一个平坦的外观,但据我所知,这没有任何属性,所以我也很高兴移除阴影,这会使它看起来更平坦。我已经尝试了几件我发现的事情,但它们并不是很有帮助。那么我怎样才能消除阴影。

0 投票
0 回答
223 浏览

c# - 从 ToolStripMenuItem 中删除边框

我正在定制我MenuStrip的让它看起来更好。我与默认设置相差甚远,但还有一件事我无法更改。我MenuStrip现在的样子是这样的。

这个

正如您在图像中看到的那样,我的ToolStripMenuItem. 我想删除它,但我不能。我已经尝试过这个解决方案,它改变了一点颜色。如何更改 toolstripmenuitem 边框颜色?

我尝试使用 Color.Pink 来查看差异,是的,它确实改变了颜色,但就像在粉红色边框周围,灰色的边框仍然存在。我想让它完全消失。我的意思是无国界。当我执行给定链接的解决方案时,我还将展示我的菜单的外观。

这个

是我覆盖时的样子ToolStripDropDownBackground

0 投票
1 回答
131 浏览

c# - C# WinForms ToolStripTextBox 大小调整和检测按键

我有一个非常简单的 C# WinForm 示例:

现在我有两个问题:

  1. 如何让文本框填满菜单的整个宽度(即与最大项目一样大)? 在此处输入图像描述

  2. 如果我按下Alt键,菜单就会关闭。Closing我可以通过处理事件来防止它:

像这样:

但是我希望能够通过按 Escape 来关闭,并且我还希望能够使用 Alt 键作为输入。

但现在 Alt 和 Escape 要么全有,要么全无。我怎样才能区分它们?

甚至在 TextBox 和 的 KeyDown 事件上都进行了尝试ct1,但 Alt 键未转发到那里。

0 投票
1 回答
121 浏览

vb.net - 无法访问 Cursor.Current.Position(访问共享成员....通过实例;将不评估限定表达式

我正在尝试确定 ToolStripMenuItem 的 MouseHover 事件中的当前鼠标位置。我正在使用 Cursor.Current.Position 属性来完成此操作。

这是预期的代码:

问题是我收到以下错误:

在网上研究了这个之后,我发现流行的观点是Cursor引用应该是完全限定的,所以我将代码更改如下:

不幸的是,我仍然遇到同样的错误。

我试过改变参考上下文;例如,将引用放在模块而不是类中。到目前为止,我一直无法解决这个错误。

我不确定为什么这个参考不起作用。从表面上看,这似乎是正确用法的教科书示例(根据 MSDN)。

我在这里想念什么?

当然,任何见解和/或建议将不胜感激。