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

Visual Studio Discussion :

Différence Formulaire / Contrôle Utilisateur / Classe


Sujet :

Visual Studio

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2018
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2018
    Messages : 88
    Points : 72
    Points
    72
    Par défaut Différence Formulaire / Contrôle Utilisateur / Classe
    Bonjour tout le monde,

    Je me permets de venir vous voir car je suis un peu perdu et je ne trouve pas vraiment ce que j'ai besoin sur internet.
    Je pensais connaitre un peu Visual Studio 2019 Community mais j'ai l'impression que pas du tout.

    Dites moi si j'ai tord :

    - Un formulaire[Design] permet de faire la partie design d'un WPF/ Winforms et le formulaire la partie pour tel bouton fait ceci ou cela. Peu de code est écrit ici, on fait appel a nos classes. Correct ?

    - Un Contrôle utilisateur permet lui d'avoir une fenêtre sans bordure qui permet de créer des éléments qui seront utilises plusieurs fois dans notre programme. La encore peu de code( selon les programmes bien sur) est écrit. Correct ?

    - Les classes permettent d’écrire toutes nos fonctions, procédures etc ... La majorité du code est écrit ici.Correct ?

    J'ai tendance a faire un gros contrôle utilisateur et ensuite de le déposer sur mon formulaire.

    Jusqu’à présent j'utilise un formulaire principal ou j'ai 2 Panels un Top et un Gauche(Celui de gauche possède des boutons qui font appels a ces contrôles utilisateurs. Sur la partie centrale/droite je positionne mes contrôles utilisateurs les uns sur les autres (quasiment toute la partie blanche est un seul contrôle utilisateurs).

    Ma question est la suivante : Est-ce la bonne technique ou alors pas du tout ? Si non, pouvez vous me guider ?

    Je vous remercie d'avance d'avoir pris le temps de me lire, et milles fois plus si vous prenez le temps de m'aiguiller.
    ps : Ceci étant mon premier programme avec plusieurs formulaire ou autres contrôles, veuillez être indulgent s'il vous plait

    Nom : photo.png
Affichages : 684
Taille : 25,0 Ko

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 150
    Points : 25 066
    Points
    25 066
    Par défaut
    une classe est un modèle permettant de créer des instances de cette classe (sauf si elle static (shared en vb) auquel cas ca sert juste à ranger du code qu'on peut appeler directement)
    avec une classe button on peut créer plusieurs boutons indépendants qui ont tous les mêmes propriétés et les même méthodes

    le code on le met en effet dans des classes

    un form/window est une classe qui hérite de form/window, avec cet héritage visual studio sait qu'on peut faire du design
    mais nous avons bien une classe, donc on peut créer plusieurs instances indépendantes et les afficher en même temps (genre une fenetre de détail d'un élément, on peut avoir plusieurs fenêtres détaillants plusieurs éléments affichées en même temps)

    pour le usercontrol c'est pareil que pour les fenêtres, et ca sert quand on a souvent plusieurs groupes de contrôles identiques avec un fonctionnement unique
    on ne perd alors plus de temps à les poser tous, on utilise le usercontrol qui les contient tous ainsi que le code pour faire fonctionner le tout
    (genre 2 labels et un bouton)
    faire un usercontrol comme on ferait une fenetre et le poser sur une fenetre il y en a qui font ca, ca ne change pas grand chose, donc ca peut se faire, mais ce n'est pas l'utilité première d'un UC

    après concernant où l'on doit mettre le code, il est en effet conseillé de faire des classes autonomes pour le code métier, les fenetre/UC ont le code qui permet de gérer l'interface et d'aller chercher les données dans les autres classes (donc si possible peu de code oui)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2018
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2018
    Messages : 88
    Points : 72
    Points
    72
    Par défaut
    Super !!!! Je te remercie d'avoir pris le temps de me répondre et bien détaillé !!!

    Pour toi, qu'est ce qu'y serait le plus adapté de faire pour ouvrir de nouvelle page.
    Je m'explique.

    Serait il plus judicieux de créer un seul form, et des gros contrôles utilisateurs ( gros = par le nombre de contrôle sur la meme page) ou d'utiliser une autre technique que je ne connais pas pour le moment ^^.
    Car je rencontre des difficultés pour faire passer des données d'un CU a un autre. D'un Form à un autre aucun soucis mais entre les CU ca coince souvent.

    Enfin, en tout cas je te remercie encore, tu m'as deja éclairé pas mal, après un long moment de doute.

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 150
    Points : 25 066
    Points
    25 066
    Par défaut
    quand on fait une appli avec des menus au sein d'une même fenetre, dans ce cas l'utilisation des usercontrols est pratique
    et si tu arrives à passer des infos entre tes forms tu devrais pouvoir faire pareil avec tes UC
    soit la fenetre qui contient les menus sert de chef d'orchestre, soit si un menu ouvre une nouvelle "page" par dessus elle transmet les infos
    car si ta fenetre principale a une zone réservée pour le menu, tu peux "ouvrir" une sous fenetre en mettant un UC de saisie dans cette zone à la place (ou par dessus) le UC de menu, et là ca peut etre le menu qui instancie le UC de saisie
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2018
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2018
    Messages : 88
    Points : 72
    Points
    72
    Par défaut
    Merci encore pour ta réponse. Mais tu m'as perdu en route ^^

    soit la fenetre qui contient les menus sert de chef d'orchestre
    Effectivement, mon menu me sert a çà. J'utilise un .BringToFront() mais ce qui veut dire que tous mes CU se lancent quand je lance mon programme (alors çà va car il est petit, mais plus je vais l’implémenter plus çà va prendre de la mémoire donc pas top)

    soit si un menu ouvre une nouvelle "page" par dessus elle transmet les infos
    Un nouveau formulaire ?

    car si ta fenetre principale a une zone réservée pour le menu, tu peux "ouvrir" une sous fenêtre en mettant un UC de saisie dans cette zone à la place (ou par dessus) le UC de menu, et là çà peut être le menu qui instancie le UC de saisie
    La je suis pas sur d'avoir compris. Je vais essayer de relire mes cours. Milles Merci Pol63

  6. #6
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 150
    Points : 25 066
    Points
    25 066
    Par défaut
    c'est surtout pour les performances graphiques qu'il est déconseillé d'avoir tous les UC
    il vaut mieux en afficher un quand il y a besoin, et le remettre dans une variable quand il n'est plus visible (pour pouvoir le retrouver si on revient dessus) et qu'un autre a pris sa place
    un dictionary est pratique pour ca
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  7. #7
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2018
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2018
    Messages : 88
    Points : 72
    Points
    72
    Par défaut
    D'accord d'accord, la ca passe au dessus de mes connaissances. Je retourne a mes livres.
    D'ailleurs si tu connais une bonne source pour mes problèmes, je suis preneur. J'ai acheté récemment (C# 8 - Développez des applications Windows avec Visual Studio 2019) Un peu déçu.

    Merci d'avoir pris le temps de lire et de me répondre !!!!

  8. #8
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 150
    Points : 25 066
    Points
    25 066
    Par défaut
    en version simple pour du winform:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private dictionary<string, usercontrol> _menus = new dictionary<string, usercontrol>();
    dans le constructeur tu fais des .add ("Employes", new leucdesemployes) etc...
    tu ramènes tous les clic de bouton sur le même void et tu peux retrouver le uc lié au menu dans _menus[(sender as button).text]

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    containermenu.controls.clear();
    containermenu.controls.Add( _menus[(sender as button).text]);
    et là ca remplace le uc qui était avant par celui du usercontrol
    vu que les stocks dans un dictionary ils ne sont pas supprimés de la mémoire et reste dans leur état

    si tu ne veux pas garder l'état des uc c'est faisable aussi



    sinon oui les livres sont souvent décevants, je ne connais pas de bon tuto sur c# car j'ai commencé sur vb.net (où je connaissais un bon tuto complet)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

Discussions similaires

  1. [Toutes versions] Différence entre contrôle de formulaire et ActiveX
    Par Pierre67 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/08/2019, 18h56
  2. Réponses: 1
    Dernier message: 09/09/2013, 11h22
  3. différence entre contrôle utilisateur et contôle composite
    Par abdallah2007 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 27/05/2009, 01h04
  4. Formulaire: contrôle utilisateur/mot de passe
    Par kh-san dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 23/08/2007, 00h27
  5. Réponses: 6
    Dernier message: 21/12/2004, 17h03

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