In einer Windows Forms App habe ich die ContextMenuStrip-Eigenschaft auf einem TabControl festgelegt.
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%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% 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):
Tags und Links c# winforms contextmenu tabcontrol