Как добавить ContextMenuStrip в ToolStripButton? - PullRequest
2 голосов
/ 12 ноября 2008

У меня есть набор инструментов, содержащий, помимо прочего, ToolStripComboBox и ToolStripButton. Я хочу добавить ContextMenuStrip к ним обоим, но у меня нет прямого доступа к панели инструментов или ее другому содержимому, поэтому я не могу установить контекстное меню панели инструментов.

Настроить ContextMenuStrip для ToolStripComboBox легко:

myToolStripComboBox.ComboBox.ContextMenuStrip = myContextMenu;

но очевидного эквивалента для ToolStripButton нет. Как добавить ContextMenuStrip в ToolStripButton?

Ответы [ 4 ]

4 голосов
/ 21 ноября 2009

То, что предложил Джефф Йейтс, должно сработать.

Однако другой альтернативой является создание собственных производных классов (MyToolSTripButton, MyToolStripTextBox ... и т. Д.), Которые придают этим элементам свойство ContextMenuStrip, которое можно установить во время разработки, и чтобы ваши производные классы определяли правую кнопку мыши или что-то подобное другие события вызовут отображение контекстного меню.

Это освобождает от любых знаний, необходимых только для тех предметов, которые интересуют.

Ниже приведен один из таких примеров использования ToolStripTextBox в качестве элемента.

public class MyTextBox : ToolStripTextBox
{
    ContextMenuStrip _contextMenuStrip;

    public ContextMenuStrip ContextMenuStrip
    {
        get { return _contextMenuStrip; }
        set { _contextMenuStrip = value; }
    }

    protected override void OnMouseDown(MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Right)
        {
            if (_contextMenuStrip !=null)
                _contextMenuStrip.Show(Parent.PointToScreen(e.Location));
        }
    }
}
2 голосов
/ 24 ноября 2008

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

0 голосов
/ 10 декабря 2008

Хороший вопрос. Возможно, вы сможете получить доступ к родительскому toolstrip (myToolStripButton.Parent или что-то подобное) и присоединить там контекстное меню.

0 голосов
/ 12 ноября 2008

Это потому, что ToolStripComboBox содержит элемент управления «System.Windows.Forms.ComboBox», а «ToolStripButton» не содержит «System.Windows.Forms.Control». Это специальный элемент toolstrip, кнопка которого поддерживается tooltip.

Вы должны использовать ContextMenu на всплывающей подсказке, или вы можете добавить выпадающий список к кнопке toolstrip.

...