问题标签 [toolstripitem]

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 投票
0 回答
306 浏览

winforms - 使用 Graphics.TextRenderingHint 和 TextRenderer.DrawText 在 ToolStripItem 中获取抗锯齿文本

我需要增强一个旧版 WinForms 应用程序以支持应用程序表单中 TextRenderingHint 设置的继承。

为简单起见,假设我们有一个带有System.Drawing.Text.TextRenderingHint类型的 TextRenderingHint 属性的主窗体。此属性指定主窗体中的文本质量,并且必须在从此主窗体调用的对话框窗体中继承。主窗体中的文本是使用Graphics.DrawString方法绘制的,支持主窗体的TextRenderingHint属性的各种设置是没有问题的(其实就是在用Graphics.DrawString绘制文本之前简单的赋值给Graphics.TextRenderingHint)

问题是其中一个对话框的界面基于 WinForms ToolStrip 组件,我需要在其项目中重新定义文本绘制以支持主窗体的 TextRenderingHint 设置。

在网上搜索并分析了反射器应用程序中ToolStripRenderer类的源代码后,我得出的结论是,实现我需要的最佳方法是使用自定义 ToolStrip 渲染器和重新定义的OnRenderItemText方法。

我在 ToolStripRenderer 类的 OnRenderItemText 方法的默认实现中找到了以下代码(请参阅我的问题底部的完整代码):

,这给了我一个想法,我可以尝试在从 ToolStripRenderer 派生的类中通过 OnRenderItemText 的这个简单实现来解决我的问题:

我的想法是基于这样一个事实,即如果我们不在 ToolStrip 项目中使用垂直文本(我们没有),基本的 OnRenderItemText 方法“只是”调用TextRenderer.DrawText并且理论上我的想法可以工作。不幸的是,实际上这仅适用于 TextRenderingHint.ClearTypeGridFit 选项 - 至少在我的开发电脑上。

我现在看到的唯一可行的想法是完全重写 OnRenderItemText 并在里面使用 Graphics.DrawString。我对吗?我的问题还有其他解决方案吗?

更新 #1。我在尝试基于 Graphics.DrawString 重新实现 OnRenderItemText 时遇到了问题。看来,不可能将传递给 TextRenderer.DrawText(TextFormatFlags枚举)的文本格式标志转换为StringFormatClass参数 Graphics.DrawString 期望的......

更新#2。ToolStripRenderer 类中 OnRenderItemText 方法的默认实现如下:

在此处输入图像描述

0 投票
1 回答
294 浏览

c# - 如何更改 ToolStripItems 的背景颜色?

当我将 a 添加ToolStripMenuItem到 aContextMenuStrip然后在其中添加 aToolStripComboBox时,其下的背景颜色ToolStripComboBox不是蓝色。但是,正如您在“Sub opt2”(位于 的主要选项中ContextMenuStrip)下看到的那样,它是蓝色的。

我的问题:你怎么能改变下面的背景ToolStripComboBox

下图是这两个ToolStripComboBox具有不同背景颜色的示例:

在此处输入图像描述

下图是我要更改的背景颜色的示例:

在此处输入图像描述

0 投票
2 回答
260 浏览

vb.net - 使用名称访问和禁用 ToolStripItems(ToolStripButtons、ToolStripMenuItems)

我想禁用名称存储在数据库中的 UI 元素(控件、组件等)。
我的代码适用于控件,但我想访问(禁用它们)ToolStripItems,例如 ToolStripButtons、ToolStripMenuItems 等。

这是我当前的代码:

0 投票
1 回答
86 浏览

vb.net - 如何使用递归提取 ContextMenuStrip 的所有 ToolStripMenuItems?

我正在尝试将所有项目从 ContextMenuStrip 提取到List(Of ToolStripMenuItem).
我可以获得 DataGridView 的 ContextMenuStrip 的引用,然后 - 使用递归函数 - 我想提取所有 的NameText属性,如果有的话ToolStripMenuItems,不包括。ToolStripSeparators

我使用这段代码:

递归的功能是FindControlRecursive_ContextMenu()

它可以工作,但是如果在 DropDown 列表中有一个ToolStripSeparator,我没有该DropDown.Items元素并且该函数会生成异常。

如何跳过 ToolStripSeparators 并使用下一个“孩子”调用递归函数?

0 投票
1 回答
90 浏览

c# - 如何将控件作为工具栏添加到 ContextMenuStrip?

我正在制作一个 Web 浏览器,但我不知道如何在其 ContextMenuStrip 顶部添加这些按钮:

在此处输入图像描述

分隔符为所有项目创建列,但只为一行创建列。
你知道怎么做吗?

0 投票
1 回答
125 浏览

c# - ToolStripLabel 未使用 PropertyBinding 更新应用程序设置

我可能有一个非常简单的问题,但找不到解决方案。我对 ToolStripLabel 的属性绑定有疑问。标签绑定到 App.Config 中的 COM 端口值。

如果我为System.Windows.Forms.Label标签绑定属性,则通过更改 COM 端口来更新 Text-Property 可以正常工作。但是,当标签为 IN ToolStrip ( System.Windows.Forms.ToolStripLabel) 时,不会通过在运行时更改 COM 端口的值来更新标签。
只有重新启动应用程序才会更改它。

图中有PropertyBindingto的当前设置ApplicationSettings

我已经尝试过:

  • 应用程序.DoEvents()
  • 工具条更新()
  • toolStrip.Refresh()
  • toolStrip.Invalidate()

没有什么不同。有谁知道问题可能是什么?

问候,萨沙

应用程序设置

标签属性设置

例子

0 投票
2 回答
136 浏览

vb.net - Option Strict On 不允许 String 和 Object {String} 之间的隐式转换

我正在尝试通过使用Option Strict On. 我设法清除了除此之外的所有错误。
我正在使用 ToolStrip 的 Tag 属性来获取一些文本信息。单击 ToolStrip,我需要记住字符串中 Tag 的值并更改该 Tag 的值。

如何将Object {String} sender.tag 转换为String以及String myString 和Object {String}

编辑:请参见此处代码相关部分的屏幕截图:

在此处输入图像描述

0 投票
1 回答
38 浏览

c# - 如何使 .NET 4.6.2 MenuStrip 在应用程序工作区上方可见(在 C# 中编程时)

我继承了一些用 Visual Studio 2010 编写的针对 .NET 2.0 框架的 C# 源代码。它包含一个简单的 Windows 窗体应用程序,其用户界面为单个窗体。

该表单包含许多菜单项,其中一个允许用户预览图像(从相机获取)。程序输出的示例如下所示,黑色矩形是图像。

NET2 Windows 窗体 (VS 2010)

我希望使用 Visual Studio 2019 从头开始​​为 .NET 4.6.2 框架重写应用程序。

重新创建表单很简单。但是,MenuItemVS2010 中用于 .NET 2.0 的组件已被MenuStripVS2019替换ToolStripMenuItem。当我构建应用程序的更新版本时,我无法使菜单条以相同的方式运行。当应用程序运行时,我的输出如下所示。

NET4.6.2 Windows 窗体(VS2019)

如您所见,顶级菜单可访问但不可见。如何找到下面的工作区图像MenuStrip

我希望答案是MenuStrip我忽略的 Visual Studio 的“属性”对话框中的一些设置。

以下是属性当前在 中的显示方式Form1.Designer.cs