IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[VB.NET] Faire un "IF var IN ("toto","ti


Sujet :

Windows Forms

  1. #1
    Membre habitué
    Inscrit en
    Juin 2004
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 13
    Par défaut [VB.NET] Faire un "IF var IN ("toto","ti
    Salut,

    comme a la mode de SQL, j'aimerais faire un IF variable IN ("Val1","Val2","Val3") etc...

    Je ne veux PAS faire un SELECT CASE, car j'ai plusieurs fois a tester sur cette variable, et afficher des menu si l'utilisateur a les droits (par exemple, afficher le menu "Gestion" si l'utilisateur est du groupe "ADMIN" ou "GESTIONNAIRE" etc....

    Je peux evidemment faire des variable="tot" or variable="titi", mais je trouve ca lourd...

    Je me demande donc si une syntaxe ou une fonction existe pour faire un test comme dans SQL : variable IN (liste de valeurs)

    merci de vos réponses...

  2. #2
    Expert confirmé
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Par défaut
    ca doit pouvoir se faire soit par le Find de la classe Array soit par le contains des collection

  3. #3
    Membre Expert Avatar de LaChips
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 109
    Par défaut
    J'ai peu être pas très bien compris mais bon je me lance :

    Si tu ne veux pas faire plusieurs Select Case (ce qui se comprend tout à fait), tu peux en faire un dans une fonction et appeler cette fonction chaque fois que c'est nécessaire

  4. #4
    Membre Expert
    Avatar de Merlin
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2002
    Messages
    524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Mars 2002
    Messages : 524
    Par défaut
    avec une fonction tu règles la question, voici un petit projet console qui tourne et qui montre la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    using System;
     
    namespace Project3
    {
    	class Class
    	{
             // La fonction
             // "mot" c'est ce qu'on cherche
            // "p" c'est la liste des chaînes i.e. "l'ensemble"
            public static bool IsInSet(string mot,params string[] p)
              { 
                  foreach (string s in p) if (string.Compare(mot,s,true)==0)
                      return true;
                  return false; 
              }
     
    		[STAThread]
    		static void Main(string[] args)
    		{
    			//
    			// TODO: Ajouter du code ici pour démarrer l'application
    			//
    			if (IsInSet("toty","titi","tata","Toto")) 
                                     Console.WriteLine("INSET");
     			         else Console.WriteLine("NOT IN SET");
    			Console.ReadLine(); // pause clavier
    		}
    	}
    }

  5. #5
    Expert confirmé
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Par défaut
    c'est pas plus simple de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    If Array.IndexOf(New String() {"tata", "titi", "toto"}, Me.TextBox1.Text) > -1 Then
    ....

  6. #6
    Membre Expert
    Avatar de Merlin
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2002
    Messages
    524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Mars 2002
    Messages : 524
    Par défaut
    Citation Envoyé par bidou
    c'est pas plus simple de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    If Array.IndexOf(New String() {"tata", "titi", "toto"}, Me.TextBox1.Text) > -1 Then
    ....
    ça se discute, d'abord si ça apparaît souvent dans le code c'est plus confus comme écriture que l'appel à une fonction, et puis côté perfs il faudrait faire des tests pour voir mais dans ton cas il y a création d'une liste de chaînes qui est détruite tout de suite car elle ne sert que pendant le test, alors qu'avec la fonction il y utilisation de "params" qui se comporte différemment (les chaînes doivent être passées sur la pile je suppose, mais ça reste à vérifier comme je le disais).
    Ensuite, l'appel à string.compare permet d'avoir un test insensible à la casse comme dans mon exemples mais on peut éventuellement paramétrer cela en ajoutant un paramètre à la fonction. On peut aussi, ce que je n'ai pas fait pour des raisons de compacité d'un simple exemple, utiliser les autres options de string.compare comme la prise en compte de la culture.
    Tout cela fait que la fonction que j'ai proposée me semble une solution de meilleure qualité et plus facilement réutilisable dans de nombreux cas, ce qui n'est évidemment pas le cas du code que tu indiques qui lui, doit être répété à chaque utilisation.

    Mais bon, après tout dépend de l'utilisation qu'on fait de la chose. Si c'est one shot, mieux vaut ton écriture, si c'est utilisé souvent mieux vaut la fonction.

Discussions similaires

  1. [Vb.NET]Faire bouger un rectangle en GDI+
    Par bicou13 dans le forum Windows Forms
    Réponses: 8
    Dernier message: 24/07/2007, 13h29
  2. Réponses: 7
    Dernier message: 07/03/2006, 09h37
  3. [VB.Net] Faire des onglets avec Webmatrix
    Par ellyne dans le forum ASP.NET
    Réponses: 2
    Dernier message: 16/01/2006, 12h03
  4. [VB.NET] Faire une recherche dans une treeview
    Par Aspic dans le forum VB.NET
    Réponses: 3
    Dernier message: 15/11/2005, 19h10
  5. [VB.Net] Faire du JS sur des contrôles côté serveur
    Par TagadaTsoin dans le forum ASP.NET
    Réponses: 4
    Dernier message: 03/11/2003, 15h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo