2010-04-26 3 views
4

La chose est que j'ai une « fenêtre de connexion » et une « fenêtre principale » qui est appelé après avoir appuyé sur le bouton de connexion ou le bouton « Visitant »onglets Hiding/blocage à l'aide de fenêtres formes C#

Si vous appuyez le bouton de connexion, tout le système sortira, et si j'appuie sur le bouton VISITANT, un onglet devrait disparaître ou être bloqué ou quelque chose.

private void visitant(object sender, EventArgs e) 
{ 
     mainwindow menu = new mainwindow(); 
     menu.Show(); 

     //mainwindow.tabPage1.Enabled = false; //attempt1 
     //mainwindow.tabPage1.Visible = false; //attempt1 

     //System.Windows.Forms.tabPage1.Enabled = false;//attempt2 
     //System.Windows.Forms.tabPage1.Visible = false;//attempt2 

     this.Hide(); 
} 

les erreurs que je reçois pour l'utilisation du attempt1 sont

Erreur 1 « System.mainwindow.tabPage1 » est inaccessible en raison de son niveau de protection »
d'erreur 2 Une référence d'objet est nécessaire pour la non champ statique, méthode ou propriété « System.mainwindow.tabPage1 »

et celui que je reçois pour utiliser le ESSAI2 est

erreur 1 le type ou le nom namespace « TabPage1 » n'existe pas dans la namespace 'System.Windows.Forms' (manque-t-il une référence d'assembly?)

Comme vous l'avez probablement deviné "tabPage1" est l'onglet que j'ai besoin de cacher lorsque j'appuie sur le bouton visitant.

Je ne peux pas penser à d'autres détails, je serai là pour fournir toute information supplémentaire

Merci à l'avance.

Répondre

3

Les contrôles que vous ajoutez à votre formulaire sont, par défaut, non visibles publiquement. Votre code "try1" serait le bon code, sauf pour ce détail.

(EDIT: pour fixer cette façon, changer le « Modificateurs » propriété de tabPage1 être Public ou Internal - cela permet à d'autres classes pour voir les commandes de l'extérieur du formulaire.)

Cependant, meilleure approche que de faire ces contrôles visibles serait de créer une nouvelle méthode publique sur votre mainwindow classe, quelque chose comme ceci:

public void HideTab() 
{ 
    tabPage1.Enabled = false; 
    tabPage1.Visible = false; 
} 

Ensuite, dans votre exemple de code, appelez votre nouvelle méthode après avoir créé/montrer la forme:

mainwindow menu = new mainwindow(); 
menu.Show(); 
menu.HideTab(); 
+0

OUI! il fait exactement ce dont j'avais besoin hehe merci beaucoup =] – Audel

0

En supposant que vous utilisez un System.Windows.Forms.TabControl pour vos TabPages appelé TabControl1, utilisez les touches suivantes:

tabControl1.TabPages.Remove(tabPage1); 

Si vous souhaitez afficher à nouveau le TabPage1, utilisez:

tabControl1.TabPages.Add(tabPage1); 
+0

Ne résout pas son problème - l'OP est aux prises avec la visibilité de la tabControl, pas comment l'utiliser (la première tentative est presque correcte). –

0

Vous devez exposer le contrôle de tabulation en déclarant une propriété publique. Ensuite, vous pouvez y accéder en utilisant menu qui est votre instance.

meilleure option est que vous exposons une propriété MainWindow comme

public bool ShowTabPage1 { get; set; } 

puis définissez true ou false par

private void visitant(object sender, EventArgs e) 
{ 
     mainwindow menu = new mainwindow(); 
     menu.ShowTabPage1 = false; 
     menu.Show();   

     this.Hide(); 
} 

enfin appliquer la logique dans l'événement de charge de la forme MainWindow.

Questions connexes