Как добавить ContextMenuStrip в ToolStripButton?
-
08-07-2019 - |
Вопрос
У меня есть набор инструментов, содержащий, помимо прочего, ToolStripComboBox и ToolStripButton. Я хочу добавить ContextMenuStrip к ним обоим, но у меня нет прямого доступа к панели инструментов или ее другому содержимому, поэтому я не могу установить контекстное меню панели инструментов.
Настроить ContextMenuStrip для ToolStripComboBox легко:
myToolStripComboBox.ComboBox.ContextMenuStrip = myContextMenu;
но нет очевидного эквивалента для ToolStripButton. Как добавить ContextMenuStrip в ToolStripButton?
Решение
То, что предложил Джефф Йетс, должно сработать. Р>
Однако другой альтернативой является создание собственных производных классов (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));
}
}
}
Другие советы
Вам нужно будет установить контекстное меню на ToolStrip, а затем обработать всплывающее окно контекстного меню или связанное событие и нажать кнопку, на которой нажимается кнопка мыши, чтобы определить, следует ли отображать контекстное меню ToolStrip и что оно должно делать. содержат. р>
Это потому, что ToolStripComboBox содержит " System.Windows.Forms.ComboBox " контроль, но " ToolStripButton " не содержит " System.Windows.Forms.Control " ;. Это специальный элемент toolstrip, кнопка которого поддерживается всплывающей подсказкой.
Вы должны использовать ContextMenu для всплывающей подсказки, или вы можете добавить выпадающий список к кнопке toolstrip.
Хороший вопрос. Возможно, вы сможете получить доступ к родительской toolstrip
( myToolStripButton.Parent
или что-то подобное) и присоединить там контекстное меню.