2016-10-26 1 views
0

Je crée une application de formulaire de Windows dans laquelle si le dictionnaire de quantité est vide alors l'utilisateur ne doit pas aller dans l'étiquette de vente je le crée en utilisant le design de métro et le mélange matériel de peau mais en utilisant le contrôle de forme régulière cela fonctionne, mais en utilisant le métro et le matériel ne fonctionne ici n'est pas morceau de codeComment empêcher une personne d'entrer dans la page d'onglet dans winfom

//check if selected tab is sales tab 
      if (tcmain.SelectedTab == tpSales) 
      { 
       //check if our cart is empty or not 
       if (Globals.qty.Count == 0) 
       { 
        //show error msg 
        var diaEmptCart = MessageBox.Show("There Are 0 Products in Cart", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); 
        //set selected tab as purchase 
        tcmain.SelectedTab = tpPurchase; 
       } 
       else 
       { 
        //or show the products available in cart for sales 
        //populate combo box with them 
        cmbPro.DataSource = new BindingSource(Globals.qty, null); 
        //set key as display member 
        cmbPro.DisplayMember = "Key"; 
       } 
      } 
      //check if selectedd tab is tab purchase 
      if (tcmain.SelectedTab == tpPurchase) 
      { 
       if (Globals.qty.Count == 0) 
       { 
        //if yes, setting cart empty 
        pbCart.Image = Image.FromFile(@"C:\Users\ThE PrOgRaMmEr\Documents\Visual Studio 2013\Projects\simpleInventory.cs.MUI\simpleInventory.cs\Resources\crt_empty.png"); 
       } 
       else 
       { 
        //if not, setting cart full 
        pbCart.Image = Image.FromFile(@"C:\Users\ThE PrOgRaMmEr\Documents\Visual Studio 2013\Projects\simpleInventory.cs.MUI\simpleInventory.cs\Resources\crt_full.png"); 
       } 
      } 
     } 

Répondre

0

Vous devez gérer l'événement de sélection de l'onglet de la commande. Essayez ceci:

private void tcmain_Selecting(object sender, TabControlCancelEventArgs e) 
{ 
     //Change whatever you want 
     if (tcmain.TabPages[e.TabPageIndex] == tpSales && Globals.qty.Count == 0) 
      e.Cancel = true; 
} 

Mais la question est pourquoi vous même afficher l'onglet. Je recommande de ne pas créer d'onglets qui ne sont pas requis.

+0

alors dois-je supprimer la méthode private void tcmain_SelectedIndexChanged (Object expéditeur, EventArgs e) en tant que telle votre solution fonctionne – Lucifer

+0

Je vous recommande de désactiver la page lorsque vous chargez votre dictionnaire et il est vide. Donc, l'utilisateur ne reçoit pas de Messagebox. Où que vous chargiez vos données, vérifiez si les ventes sont vides et appelez tpSales.Enable = false; – Sebi

+0

@Jaydeep, si vous ne voulez pas faire une tâche spécifique sur l'onglet sélectionné, vous pouvez supprimer cet événement. Aussi s'il vous plaît marquer comme réponse si elle est utile –