Come faccio ad aggiungere un ContextMenuStrip a un ToolStripButton?
-
08-07-2019 - |
Domanda
Ho una toolstrip contenente, tra le altre cose, ToolStripComboBox e ToolStripButton. Voglio aggiungere un ContextMenuStrip a entrambi, ma non ho accesso diretto alla toolstrip o ai suoi altri contenuti, quindi non posso impostare il menu contestuale della toolstrip.
L'impostazione di ContextMenuStrip per ToolStripComboBox è semplice:
myToolStripComboBox.ComboBox.ContextMenuStrip = myContextMenu;
ma non esiste un equivalente ovvio per ToolStripButton. Come faccio ad aggiungere un ContextMenuStrip a un ToolStripButton?
Soluzione
Ciò che Jeff Yates ha suggerito dovrebbe funzionare.
Tuttavia, un'altra alternativa è quella di creare le proprie classi derivate (MyToolSTripButton, MyToolStripTextBox ... ecc.) assegnare a questi elementi una proprietà ContextMenuStrip che è possibile impostare in fase di progettazione e fare in modo che le classi derivate rilevino il tasto destro del mouse o altro altri eventi attiveranno la visualizzazione del menu contestuale.
Questo scarica tutte le conoscenze necessarie solo a quegli articoli interessati.
Di seguito è riportato uno di questi esempi che utilizza ToolStripTextBox come elemento.
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));
}
}
}
Altri suggerimenti
Dovrai impostare il menu di scelta rapida su ToolStrip e quindi gestire il popup del menu di scelta rapida o un evento correlato e premere test su quale pulsante si trova il mouse per determinare se è necessario mostrare il menu di scelta rapida di ToolStrip e cosa dovrebbe contenere.
È perché un ToolStripComboBox contiene " System.Windows.Forms.ComboBox " controllo, ma " ToolStripButton " non contiene " System.Windows.Forms.Control " ;. Il suo speciale oggetto toolstrip, il cui pulsante è gestito da tooltip.
Dovresti usare ContextMenu in tooltip oppure puoi aggiungere il menu a discesa all'elemento toolstripbutton.
Buona domanda. Potresti essere in grado di accedere al toolstrip
( myToolStripButton.Parent
o qualcosa di simile) o allegare il menu contestuale lì