Existe-t-il un moyen simple (5 lignes de code) de le faire?Fermer l'onglet sur le contrôle de l'onglet winforms avec le bouton du milieu de la souris
8
A
Répondre
20
Le code le plus court pour supprimer l'onglet sur lequel le bouton du milieu de la souris a été cliqué est en utilisant LINQ.
Assurez-vous que l'événement est câbléthis.tabControl1.MouseClick += tabControl1_MouseClick;
Et pour le gestionnaire lui-même
private void tabControl1_MouseClick(object sender, MouseEventArgs e)
{
var tabControl = sender as TabControl;
var tabs = tabControl.TabPages;
if (e.Button == MouseButtons.Middle)
{
tabs.Remove(tabs.Cast<TabPage>()
.Where((t, i) => tabControl.GetTabRect(i).Contains(e.Location))
.First());
}
}
Et si vous efforcez moins de lignes, ici il est dans une ligne
tabControl1.MouseClick += delegate(object sender, MouseEventArgs e) { var tabControl = sender as TabControl; var tabs = tabControl.TabPages; if (e.Button == MouseButtons.Middle) { tabs.Remove(tabs.Cast<TabPage>().Where((t, i) => tabControl.GetTabRect(i).Contains(e.Location)).First()); } };
-1
Vous pouvez le faire:
private void tabControl1_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Middle)
{
// choose tabpage to delete like below
tabControl1.TabPages.Remove(tabControl1.TabPages[0]);
}
}
Fondamentalement, vous êtes juste attraper un clic de souris sur le contrôle onglet et ne supprimer une page si le bouton du milieu a été cliqué.
6
Solution sans LINQ pas si compact et beau, mais aussi réel:
private void TabControlMainMouseDown(object sender, MouseEventArgs e)
{
var tabControl = sender as TabControl;
TabPage tabPageCurrent = null;
if (e.Button == MouseButtons.Middle)
{
for (var i = 0; i < tabControl.TabCount; i++)
{
if (!tabControl.GetTabRect(i).Contains(e.Location))
continue;
tabPageCurrent = tabControl.TabPages[i];
break;
}
if (tabPageCurrent != null)
tabControl.TabPages.Remove(tabPageCurrent);
}
}
2
D Il n'y a pas assez de points pour poster un commentaire sur les solutions fournies, mais ils souffrent tous de la même faille: Les contrôles dans l'onglet supprimé ne sont pas libérés.
Cordialement
Questions connexes
- 1. Comment puis-je détecter le bouton de la souris sur un contrôle Winforms?
- 2. Comment récupérer le bouton du milieu de la souris dans Java?
- 3. ajouter fermer le bouton
- 4. Glisser-déposer avec le bouton droit de la souris wpf
- 5. QListView clique sur le bouton de la souris
- 6. Comment détecter le clic droit de la souris tout en appuyant sur le bouton gauche de la souris dans IE?
- 7. Cliquez avec le bouton droit de la souris sur les onglets de feuille désactivés dans Excel
- 8. Envoyer sur le plateau Fermer
- 9. Arrêt System.Windows.SplashScreen avec WinForms de fermer l'application
- 10. Effet de la souris sur le bouton en C# (avec Visual Studio 05)
- 11. Fonctionnalité par défaut de surcharge VB.NET lorsque l'utilisateur clique sur le bouton X (Fermer le programme)
- 12. Obtenir la position/le bouton de la souris sur l'événement DoubleClick
- 13. Comment masquer le bouton d'actualisation sur le contrôle du visualiseur de rapports (ASP.NET)
- 14. Comment détecter la souris en bougeant le bouton gauche
- 15. C# Winforms Contrôle Transparent permettant le Clic
- 16. Bouton de la souris dans ToolStripMenuItem
- 17. Impossible de trouver le contrôle du bouton suivant dans l'Assistant
- 18. Style un bouton WPF sur le clic droit de la souris
- 19. Comment puis-je changer la couleur d'un bouton de lien généré dynamiquement sur le curseur de la souris avec JavaScript?
- 20. wpf listview cliquez avec le bouton droit sur le problème
- 21. Comment implémenter le déplacement de la souris dans Visual Basic?
- 22. Comment ouvrir le menu du bouton rouge sur Visual Studio (2008) avec le clavier?
- 23. Modification du comportement de la souris dans le menu YUI
- 24. Panneau de contrôle sur le contenu dans le formulaire
- 25. Cliquez avec le bouton droit de la souris pour sélectionner une ligne datagridview
- 26. Désactivation du bouton Précédent sur le navigateur
- 27. IE8, Flash et le contrôle WinForms WebBrowser
- 28. Intention de la vidéo Android: bouton de contrôle du retour?
- 29. Panneau de glissement jQuery sur le survol de la souris
- 30. Le bouton d'entrée du contrôle Fileupload ne fonctionne pas
C'est juste beau code ... –
Maintenant, vous êtes juste en train de montrer :) Brillant homme, merci. –