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 :

Switch, case UserControl [Débutant]


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Micro-Entrepreneur
    Inscrit en
    Avril 2021
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Micro-Entrepreneur
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2021
    Messages : 24
    Par défaut Switch, case UserControl
    Bonsoir, je cherche a faire un switch case en fonctions de l'UserControl présent dans un panel de mon MainForm, mais j'y arrive pas, auriez vous une idée de comment procéder ?

  2. #2
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 974
    Par défaut
    Pour répondre strictement à ta question bien que ce ne soit pas la solution la plus élégante :
    En C# 7, tu dois pouvoir faire ceci :
    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
    switch (userControl)
    {
        case MyUserControl1 uc1:
            DoSomething();
            break;
        case MyUserControl1 uc2:
            DoSomethingElse();
            break;
        case null:
            throw new ArgumentNullException();
            break;
        default:
     
            throw new UnknownUserControlException();
            break;
    }
    Avant C# 7, tu dois passer par une structure if..else if...else classique.


    Sinon, une solution plus élégante est de créer une classe UserControlBase héritant de UserControl dans laquel tu déclare une méthode abtraite DoSomething();
    Tous tes UserControl devront alors hériter de UserControlBase au lieu de UserControl et surcharger la méthode DoSomething.
    Et ensuite à partir de ton MainForm, il suffira d'appeler userControl.Domething() quelque soit le UserControl derrière.

  3. #3
    Membre averti
    Homme Profil pro
    Micro-Entrepreneur
    Inscrit en
    Avril 2021
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Micro-Entrepreneur
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2021
    Messages : 24
    Par défaut
    Bonjour et merci pour ta réponses, j'ai pas tout bien compris, ça fait que quelques jours que j'ai commencé le C# et même pas 2 mois le codage, en tant qu'autodidacte donc 0 connaissance en bagage au départ.
    Mais je vais chercher plus en profondeur en suivant la piste que tu m'as fournit.
    Merci encore.

  4. #4
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 974
    Par défaut
    Citation Envoyé par Vincent Vision Voir le message
    Bonjour et merci pour ta réponses, j'ai pas tout bien compris, ça fait que quelques jours que j'ai commencé le C# et même pas 2 mois le codage, en tant qu'autodidacte donc 0 connaissance en bagage au départ.
    Mais je vais chercher plus en profondeur en suivant la piste que tu m'as fournit.
    Merci encore.
    Si tu découvres le développement, tu vas galérer avec la réponse que t'ai faite puisqu'elle repose sur des notions de POO.
    Le Net fourmille de tutos sur la POO dans tous les langages possibles et imaginables.
    Commence par en lire quelques un, mon approche te sembleras moins obscure

  5. #5
    Membre averti
    Homme Profil pro
    Micro-Entrepreneur
    Inscrit en
    Avril 2021
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Micro-Entrepreneur
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2021
    Messages : 24
    Par défaut
    Effectivement, j'ai pas toutes les notions encore, c'est bien pour ça que j'ai pas tout saisi ce que tu m'as dis, mais je me doutes bien qu'il existe déjà des explications plus claire de ce que tu me dis, c'est pour ça que je ne t'ai pas demandé d'approfondir, faut bien que je me débrouille un peu par moi même .

    Merci encore pour cette précision sur la piste à suivre (POO).

    Edit : le pire c'est que si cela se trouve j'ai déjà fait ce genre de chose (j'ai codé un bot discord en JS
    Edit2 : ok je commence à comprendre, merci

  6. #6
    Membre averti
    Homme Profil pro
    Micro-Entrepreneur
    Inscrit en
    Avril 2021
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Micro-Entrepreneur
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2021
    Messages : 24
    Par défaut
    J'ai créé la class héritant de usercontrol, j'y ai déclarer une méthode doSomethings() et là je suis bloqué, déjà si je mets abstract entre public et void il me mets une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    class UCBase : UserControl
        {
            public void DoSomethings()
            {
     
            }
        }
    Ensuite j'ai pas compris ce que je dois mettre dans la méthode, mon switch case ?
    Parce qu'au final comment il va savoir ce qu'il doit afficher quand j'appuis sur mon boutton ?

    Et quand je veux modifier l’héritage de mes usercontrol il me met également une erreur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public partial class Info1 : UCBase
        {
            public Info1()
            {
                InitializeComponent();
            }
        }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Language]Probleme de switch case
    Par nana1 dans le forum Langage
    Réponses: 20
    Dernier message: 17/11/2005, 00h49
  2. switch case pour deux variable en meme temps
    Par petitours dans le forum C
    Réponses: 3
    Dernier message: 06/11/2005, 19h20
  3. [Tableaux] Problème avec Switch case
    Par philippef dans le forum Langage
    Réponses: 4
    Dernier message: 07/09/2005, 16h37
  4. probleme gestion condition switch - case
    Par DarkMax dans le forum Langage
    Réponses: 5
    Dernier message: 07/09/2005, 14h25
  5. [Language] aide sur les switch case
    Par pouss dans le forum Langage
    Réponses: 3
    Dernier message: 05/04/2005, 11h34

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