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 ?
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 ?
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 :
Avant C# 7, tu dois passer par une structure if..else if...else classique.
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; }
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.
Mes tutoriels
Avant de poster :
- F1
- FAQ
- Tutoriels
- Guide du développeur Delphi devant un problème
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
Mes tutoriels
Avant de poster :
- F1
- FAQ
- Tutoriels
- Guide du développeur Delphi devant un problème
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
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 :
Ensuite j'ai pas compris ce que je dois mettre dans la méthode, mon switch case ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 class UCBase : UserControl { public void DoSomethings() { } }
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(); } }
Partager