TabControl Kontextmenü

7

In einer Windows Forms App habe ich die ContextMenuStrip-Eigenschaft auf einem TabControl festgelegt.

  1. Wie kann ich feststellen, dass der Benutzer auf einen anderen als den aktuell ausgewählten Tab geklickt hat?
  2. Wie kann ich das Kontextmenü so einschränken, dass es nur angezeigt wird, wenn auf den oberen Tab-Abschnitt mit der Bezeichnung geklickt wird und nicht an anderer Stelle auf der Registerkarte?
blu 19.01.2009, 14:10
quelle

4 Antworten

11

Setzen Sie die Eigenschaft contextMenuStrip nicht auf TabControl. Mach es lieber so. Schließen Sie sich an das MouseClick-Ereignis von tabControl an und zeigen Sie das Kontextmenü manuell an. Dies wird nur ausgelöst, wenn auf die Registerkarte oben geklickt wird, nicht auf die eigentliche Seite. Wenn Sie auf die Seite klicken, erhält die RegisterkarteControl das Klickereignis nicht, die TabPage. Irgendein Code:

%Vor%     
BFree 19.01.2009, 14:28
quelle
11

Eröffnungsereignis des Kontextmenüs kann verwendet werden, um beide Probleme zu lösen

%Vor%     
nisar 09.05.2012 20:35
quelle
2

Ein bisschen spät, aber ich habe eine Lösung für den ersten Teil Ihrer Frage gefunden. Sie können herausfinden, auf welche Registerkarte mit der rechten Maustaste geklickt wurde, indem Sie mit der linken Maustaste auf die Anwendung klicken. Dadurch wird die Registerkarte ausgewählt. Sie können jetzt mit der Eigenschaft "TabControl.SelectedTab" die Registerkarte abrufen, auf die der Benutzer mit der rechten Maustaste geklickt hat.

%Vor%     
AJ_ 18.06.2011 01:11
quelle
0

Ich suchte nach einer Lösung für genau das gleiche Problem. Nachdem ich sowohl @nisar als auch @BFree Antworten getestet hatte, kam ich dazu (ich hatte auch das tabcontrol in einem panel irgendwo im Formular):

%Vor%     
David Silva-Barrera 22.07.2016 13:56
quelle