带弹出菜单的ToolStripButton?

时间:2009-02-15 12:54:17

标签: .net winforms user-interface contextmenu toolstrip

我正在为类似绘画的程序执行GUI,用户可以从ToolStrip中选择绘图工具。其中一些工具有变化,我希望用户能够通过弹出菜单选择一个。

任何熟悉Photoshop工具栏界面的人都会知道我在追求的内容:用户可以点击按钮开始使用所选工具,也可以从点击后出现的弹出菜单中选择一个工具,然后从按钮上的那一点将代表该工具。此外,当选择该工具系列时,该按钮将Checked属性设置为True。

我认为这可以通过SplitButton或DropDownButton来完成,但是这些没有Checked属性供用户查看当前选择的工具。所以我选择了ToolStripButton和一个在点击时显示的ContextMenuStrip。

问题在于,由于我正在将光标位置显示为ContextMenuStrip,因此根据单击ToolStripButton的哪个部分,弹出菜单可能会部分覆盖它,并且它是一个非常未经修饰的外观。如何获取ToolStripButton的屏幕坐标?或者有更好的(并且仍然相对简单)的方法吗?

2 个答案:

答案 0 :(得分:1)

我之前在应用程序中实现了这种功能。在Photoshop中,每个工具都有不同的图标(套索和多边形套索有不同的图标,画笔和铅笔有不同的图标)。因此,当使用工具条时,我使用分割按钮。当用户从下拉列表中选择工具时,您将所选工具的图标应用于拆分按钮。

ToolStripItem可以有一个背景图像。要显示所选项目,您只需将背景图像设置为纯色半透明图像(即透明度为25%的纯黑色)。

编辑:最好使用半透明版本的SystemColors.Highlight

答案 1 :(得分:0)

您没有说明您使用的GUI技术。我猜winforms或WPF。如果您有选择WPF可能是最好的长期选择,不仅支持您的上下文菜单按钮,还支持您的应用程序的绘画部分。

如果您使用的是winforms,您是否考虑过在主按钮上添加上下文菜单?