ToolStripButton с всплывающим меню? - PullRequest
0 голосов
/ 15 февраля 2009

Я делаю графический интерфейс для подобной программе, где пользователь сможет выбрать инструмент рисования из ToolStrip. Некоторые из этих инструментов имеют варианты, и я бы хотел, чтобы пользователь мог выбрать один из них во всплывающем меню.

Любой, кто знаком с интерфейсом панели инструментов Photoshop, знает, что мне нужно: пользователь может либо нажать кнопку и начать работу с выбранным инструментом, либо выбрать один из инструментов во всплывающем меню, которое появляется при нажатии, и из эта точка на кнопке будет представлять этот инструмент. Кроме того, для кнопки будет установлено свойство Trueed, равное True, когда выбрано это семейство инструментов.

Я думал, что это можно сделать с помощью SplitButton или DropDownButton, но у них нет свойства Checked, чтобы пользователь мог видеть, какой инструмент выбран в данный момент. Поэтому я выбрал ToolStripButton и ContextMenuStrip, которые отображаются при нажатии.

Проблема в том, что, поскольку я беру позицию курсора, чтобы показать ContextMenuStrip, в зависимости от того, какая часть ToolStripButton нажата, всплывающее меню может частично покрывать это, и это очень неполированный вид. Как я могу получить координаты экрана ToolStripButton? Или есть лучший (и все еще относительно простой) способ сделать это?

Ответы [ 2 ]

1 голос
/ 15 февраля 2009

Я уже реализовывал такую ​​функцию в приложениях. В Photoshop каждый инструмент имеет разные иконки (лассо и полигональное лассо имеют разные иконки, кисть и карандаш имеют разные иконки). Поэтому, когда я использую инструментальную полосу, я использую кнопку разделения. Когда пользователь выбирает инструмент из раскрывающегося списка, вы применяете значок выбранного инструмента к кнопке разделения.

ToolStripItem может иметь фоновое изображение. Чтобы показать выбранный элемент, вы можете просто установить фоновое изображение на полупрозрачное полупрозрачное изображение (то есть сплошной черный с прозрачностью 25%).

edit: вероятно, было бы лучше использовать полупрозрачную версию SystemColors. Highlight

0 голосов
/ 15 февраля 2009

Вы не говорите, какую технологию вы используете для графического интерфейса. Я предполагаю winforms или WPF. Если у вас есть выбор, WPF может быть лучшим долгосрочным выбором для поддержки не только кнопок контекстного меню, но и для поддержки рисования в вашем приложении.

Если вы используете winforms, вы смотрели на добавление контекстного меню к вашим основным кнопкам?

...