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 :

Créer application avec interface graphique depuis application console


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 72
    Points : 51
    Points
    51
    Par défaut Créer application avec interface graphique depuis application console
    Bonjour à tous,

    J'ai développé récemment une application console en C#, et j'aimerais à présent créer une nouvelle version de cette application avec une interface graphique (avec Windows Forms).
    Dois-je créer un nouveau projet "Windows Form Application" et réutiliser le code de mon ancienne application, ou bien y a t-il une autre solution ?
    Sachant que le code de l'application console peut évoluer, ce qui m'obligerait à apporter les modifications dans les deux projets...

    Merci d'avance pour votre aide !

  2. #2
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Ta demande correspond à un besoin assez courant : un outil avec un GUI et en même temps un mode console utilisable depuis un script.

    Le plus simple est de faire trois projets (pas 2, mais 3) dans ta solution :

    - une DLL avec tout ton code sauf l'interface utilisateur
    - une appli console qui appelle ta DLL
    - une appli winform ou WPF qui contient le GUI et qui appelle aussi ta DLL.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 72
    Points : 51
    Points
    51
    Par défaut
    Merci pour ta réponse, Bluedeep.
    Je vais essayer cette solution, mais comment devrais-je m'y prendre pour les affichages ?
    Créer une fonction qui a un comportement différent suivant si c'est l'application console ou l'application Windows Forms qui appelle la DLL ?

  4. #4
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par Morgan7469 Voir le message
    Merci pour ta réponse, Bluedeep.
    Je vais essayer cette solution, mais comment devrais-je m'y prendre pour les affichages ?
    Créer une fonction qui a un comportement différent suivant si c'est l'application console ou l'application Windows Forms qui appelle la DLL ?
    A priori cette solution n'est pas très élégante, mais comme je n'ai aucune idée de ce que tu veux afficher......

    Sinon, je ne vois pas l'interêt d'embarquer l'affichage dans ta DLL. A priori ce qui diffère entre les version Console et WinForms c'est justement l'affichage. Donc le code d'affichage resterait spécifique à chaque application.

    Masi là encore, je ne sais pas ce que tu veux afficher.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 72
    Points : 51
    Points
    51
    Par défaut
    D'accord, alors je vais sortir l'affichage de ma DLL.
    Merci beaucoup pour ton aide

  6. #6
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 72
    Points : 51
    Points
    51
    Par défaut
    J'ai encore besoin de votre aide.
    Je ne trouve pas le moyen de sortir l'affichage de ma DLL.

    Par exemple, ma DLL contient une classe Tâche avec une méthode Exécuter().
    J'aimerais afficher dans ma console ou dans un MessageBox différents messages en fonction de l'avancement de l'exécution de la tâche.
    Il faudrait donc que j'appelle la fonction Afficher() soit de mon projet console, soit de mon projet Windows Form.

    Comment procéder ?

  7. #7
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Ahah ! C'est dans ce genre de cas que la POO est bien pratique.

    Ta DLL veut afficher des choses. Et tu veux que ta console ou ta GUI puissent afficher ces choses.
    Pour ce faire, le plus simple est d'avoir une interface (disons IDisplay), dans l'assembly partagée, avec la définition d'une méthode Affiche(string message).

    Le code de ta dll ne connait que cette interface, et pas les éventuelles implémentations concrètes.

    Ensuite, les projets Console et GUI contiennent chacun une classe implémentant cette interface. Charge à eux, aussi, de donner une instance de cette classe au composant de la DLL qui en a besoin.
    Donc:
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    //dans la dll
    ...
    public class Tache
    {
      private IDisplay display;
     
      public Tache(IDisplay display)
      {
        this.display = display;
      }
     
      public void Exécuter()
      {
        ....
        this.display.Afficher("hello !");
        ....
      }
    }
     
    public interface IDisplay
    {
      void Afficher(string msg);
    }
     
    // dans le projet console
    public class ConsoleDisplay : IDisplay
    {
      public void Afficher(string msg)
      {
        Console.WriteLine(msg);
      }
    }
     
    // ailleurs dans le projet console
    var t = new Tache(new ConsoleDisplay());
    t.Executer();
     
    // dans le projet GUI
    public class WindowDisplay : IDisplay
    {
      public void Afficher(string msg)
      {
        Messagebox.Show(msg);
      }
    }
     
    // ailleurs dans le projet GUI
    var t = new Tache(new WindowDisplay());
    t.Executer();
    ಠ_ಠ

  8. #8
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 72
    Points : 51
    Points
    51
    Par défaut
    Merci Guulh !
    J'imaginais bien qu'il fallait avoir recours à une interface mais cela restait très flou dans ma tête...
    Grâce à toi c'est maintenant très clair !

  9. #9
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    Je profite de ca pour me faire un petit peu de pub!
    http://nathanaelmarchand.developpez....es-avec-unity/

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

Discussions similaires

  1. Application réseau avec interface graphique
    Par Invité dans le forum Ada
    Réponses: 7
    Dernier message: 23/09/2013, 20h48
  2. conception d'une application avec interface graphique en c
    Par AngeAbstraction dans le forum Débuter
    Réponses: 6
    Dernier message: 28/09/2012, 15h36
  3. Créer une application avec interface Wifi
    Par RandD dans le forum Visual C++
    Réponses: 3
    Dernier message: 24/09/2009, 20h14
  4. Réponses: 2
    Dernier message: 27/10/2006, 18h54
  5. Application multiplateforme avec interface graphique
    Par TNorth dans le forum Choisir un environnement de développement
    Réponses: 2
    Dernier message: 31/01/2004, 18h55

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