Comment masquer la TabPage du TabControl dans WinForms 2.0 ?
Mais RemoveByKey() + Add() fonctionnent parfaitement.
Comment masquer la TabPage du TabControl dans WinForms 2.0 ?
@VinkoVrsalovic c'est ce que cette réponse dit essentiellement... "supprimer l'onglet et le réinsérer" - elle ne donne simplement pas le code pour le faire. De plus, en disant essentiellement que ce n'est pas "possible", cela implique que le fait d'essayer pose des problèmes, dont l'un est l'ordre des onglets...
Le seul problème que cela pose, c'est lorsque, par exemple, vous essayez de masquer une barre de menu qui sera ajoutée au parent MDI. La suppression de l'onglet libère tous les événements et la fusion du menu.
Ou en option : int idx = tabControl1.TabPages.IndexOf(tabPage1); tabControl1.TabPages.RemoveAt(idx);
La propriété Visiblity n'a pas été implémentée sur les pages d'onglets, et il n'y a pas non plus de méthode Insert.
Vous devez insérer et supprimer manuellement les onglets.
Voici un moyen de contourner ce problème.
http://www.dotnetspider.com/resources/18344-Hiding-Showing-Tabpages-Tabcontrol.aspx
Afin d'éviter le klikering visuel, vous devrez peut-être utiliser :
bindingSource.RaiseListChangeEvent = false
o
myTabControl.RaiseSelectedIndexChanged = false
Supprimer un onglet :
myTabControl.Remove(myTabPage);
Ajouter une page à onglet :
myTabControl.Add(myTabPage);
Insérer une page à onglet à un endroit précis :
myTabControl.Insert(2, myTabPage);
N'oubliez pas d'annuler les changements :
bindingSource.RaiseListChangeEvent = true;
o
myTabControl.RaiseSelectedIndexChanged = true;
myTabPage.parent = null;
myTabPage.parent = myTabControl;
La variante 2 est intéressante, mais lorsque vous rétablissez le parent, la page de l'onglet sera ajoutée à la fin de la liste au lieu de sa position précédente.
Créez une nouvelle classe vide et placez-y ceci :
using System.Windows.Forms;
namespace ExtensionMethods
{
public static class TabPageExtensions
{
public static bool IsVisible(this TabPage tabPage)
{
if (tabPage.Parent == null)
return false;
else if (tabPage.Parent.Contains(tabPage))
return true;
else
return false;
}
public static void HidePage(this TabPage tabPage)
{
TabControl parent = (TabControl)tabPage.Parent;
parent.TabPages.Remove(tabPage);
}
public static void ShowPageInTabControl(this TabPage tabPage,TabControl parent)
{
parent.TabPages.Add(tabPage);
}
}
}
2- Ajouter une référence à l'espace de nom ExtensionMethods dans le code de votre formulaire :
using ExtensionMethods;
3- Vous pouvez maintenant utiliser yourTabPage.IsVisible();
pour vérifier sa visibilité, yourTabPage.HidePage();
pour le cacher, et yourTabPage.ShowPageInTabControl(parentTabControl);
pour le montrer.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
2 votes
@tomaszs , vous pouvez essayer de supprimer une page d'onglet comme TabPage page2 = tabControl1.TabPages[tpAdministration.Name ] ; tabControl1.TabPages.Remove(page2) ;