Ho un numero personalizzato TabControl
in cui sono associato TabPages
con ContextMenu
.Come inserire un oggetto ContextMenu nell'intestazione di una TabPage
Desidero visualizzare il menu solo quando si fa clic sull'intestazione della pagina.
Quello che faccio è che, quando il TabControl
viene cliccato, verifico queste condizioni:
private void MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == Mousebuttons.Right)
{
for (int i = 0; i < TabCount; ++i)
{
Rectangle r = GetTabRect(i);
if (r.Contains(e.Location) /* && it is the header that was clicked*/)
{
// Change slected index, get the page, create contextual menu
ContextMenu cm = new ContextMenu();
// Add several items to menu
page.ContextMenu = cm;
page.ContextMenu.Show(this, e.Location);
}
}
}
}
Se mi legano MouseUp
al TabControl
, ho l'ContextMenu
in tutta la TabPage
. Se lo lego allo TabPage
, ottengo solo il ContextMenu
nel corpo e non nell'intestazione.
C'è un modo per far apparire un ContextMenu solo sull'intestazione?
L'evento 'MouseUp' è collegato a ogni' TabPage' o al 'TabControl'? – DonBoitnott
MouseUp è collegato a TabControl. Se lo collego al TabControl ottengo il ContextMenu nell'intera tabpage. Se lo lego a TabPage, ottengo solo il ContextMenu nel corpo e non nell'intestazione. –