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 :

Console application vers Windows forms


Sujet :

Visual Studio

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2017
    Messages : 10
    Par défaut Console application vers Windows forms
    Bonjour à tous,

    J'aimerais "convertir" une console application en windows form. J'ai tenté de copier mon program.cs de la console app vers un projet windows form mais Ça ne fonctionne pas.
    Je voudrais que lorsque je clique sur un bouton le programme s'exécute.

    Visual studio community 2015
    Windows 10
    C#

    Merci de votre aide

  2. #2
    Membre émérite
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Saône et Loire (Bourgogne)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 562
    Par défaut
    Bonjour,

    A tu déjà réalisé un projet winForm ?
    Si oui quel est le problème ? si non, commence par là ...

    J@ck.

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2017
    Messages : 10
    Par défaut Bouton
    Bonjour, merci pour ta réponse.

    J'ai copier le code de mon program.cs de la console app vers le program.cs de mon projet winform que j'ai crée. Puis dans Form.cs j'ai uniquement une fenêtre avec un bouton.

    ça fonctionne! c'est a dire que mon script fait ce que je veux lorsque je l’exécute et juste après ma fenêtre s'affiche.. ce que je voudrais c'est qu'il s’exécute après que j'ai cliqué sur le bouton de ma fenetre.
    Pour l'instant mon bouton est vide..

    private void button1_Click(object sender, EventArgs e)
    {

    }


    Est-il donc possible d'appeler mon programme principale (qui se trouve dans program.cs) depuis mon bouton ?

    Merci

  4. #4
    Membre émérite
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Saône et Loire (Bourgogne)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 562
    Par défaut
    La solution moche serait de faire une fonction statique dans program.cs
    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
    static class Program
    {
        static void Main()
         {
           ....
         }
    
        public static void MaFonction()
        {
          //je fais des trucs
        }
    }
    
    /// dans Form.cs
    private void button1_Click(object sender, EventArgs e)
    {
        Program.MaFonction();
    }
    De mon point de vue c'est très moche.... mais ça marche.

    Maintenant si tu veux du moins moche faudrait qu'on ai une idée de ce que fait ta fonction... et tu va être rapidement confronté à certain problèmes comme par exemple ton appli qui va être indisponible pendant ton traitement, si il fait 500ms c'est bien, s'il prend plus ça va devenir problématique.

    J@ck.

  5. #5
    Membre habitué
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2017
    Messages : 10
    Par défaut code console app
    Merci encore pour vos réponses qui m'aident a avancer


    il y a beaucoup de données traité donc oui c'est supérieur a 500 ms.

    Puis-je vous envoyer en PV mon programme en console app?. N'est il pas possible de le "transformé" en windows form en changeant le code?


    Merci

  6. #6
    Membre émérite
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Saône et Loire (Bourgogne)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 562
    Par défaut
    Non les messages privés sont à proscrire, déjà parce que je n'aurais pas le temps (ni l'envie, perso j'ai pas se problème donc peu d'intérêt à la résoudre..) et surtout ça ne servira jamais la communauté ...


    Revenons à ton problème.
    Te me contredis si je me trompe => tu avais besoin d'une procédure, du coup tu l'as faite un peu à l'arrache dans un programme console, il fonctionne nikel, maintenant tu te dis, je vais mettre ça dans une interface, comme ça je vais pouvoir leur faire saisir un ou deux paramètre, un bouton, et poufff je leur en mets plein la vue
    Mais la tu te rend compte qu'un copier coller n'est pas si simple ... et tu as raison, mais bon c'est pas infaisable non plus, tu as d'ailleurs sans doute passé certain des plus gros problèmes techniques, le tout maintenant se sera de découper correctement le code et de mettre les bonnes choses dans au bon endroit.
    Je vais d'ailleurs tout de suite te proposer d'aller lire un tuto sur le développement en couche N-tiers (ou 3-tiers enfin demande à google, c'est juste pour avoir une idée de l'archi dans un premier temps) pratique qui consiste à découper ton code pour respecter les 3 principales responsabilités d'une application : 1 couche qui a la charge de fournir les données, une couche qui à la charge de la logique métier, et une qui à la charge du rendu visuel. Chaque couche pouvant être vue comme un cube interchangeable.
    Ainsi dans ton cas si tu avais respecté cette archi dès le début alors tu n'aurais plus de problème, tu aurais juste à appeler ta couche métier depuis cette nouvelle couche graphique....

    Donc dit nous en plus sur ta routine, car suivant ce qu'elle fait on ira plus ou moins loin. en gros si tu as des accès serveur on pars sur du dev par couche, si tu ne fais que de renommer des fichiers on va plus partir sur une fonction asynchrone qui ne bloquera pas ton interface.

    J@ck.

  7. #7
    Membre habitué
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2017
    Messages : 10
    Par défaut drag and drop
    Bonsoir,

    J'ai réussi ! j'ai refait entièrement le code pour qu'il soit compatible a Windows form

    Cependant, je bloque maintenant sur le drag and drop. Je voudrais en fait après avoir glissé un fichier le lire dans une datagridview. (Dans mon code de départ j'entrais un chemin de fichier dans une TextBox et ça fonctionne.)

    voici mon code :
    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
    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
     
            private void Form1_Load(object sender, EventArgs e)
            { 
     
    /*------------------Code correspondant au textBox---------*/
                Repertoire.Text = Path.GetFullPath(
                      Path.Combine(System.Windows.Forms.Application.StartupPath, "..\\..")) +
                      "\\FichieràLire.";
                Repertoire.Select(0, 0);
            }
     
            private void panel1_Paint(object sender, PaintEventArgs e)
            {
     
            }
     
            private void panel1_DragEnter(object sender, DragEventArgs e)
            {
                e.Effect = DragDropEffects.All;
            }
     
            private void panel1_DragDrop(object sender, DragEventArgs e)
            {
                string[] files = (string[])e.Data.GetData(DataFormats.FileDrop, false);
     
    /*------Afficher une fenêtre avec le nom du fichier importé-----*/
                foreach (string file in files)
                    MessageBox.Show(file);
     
     
            }
     
            private void Bouton_Lire(object sender, EventArgs e)
            {
    /*--------------Ma fonction-------------------------------*/
     
                string[,] values = MaFonction(Repertoire.Text);
     
    /*-------------Suite des instructions--------------------*/
    Je pense que le paramètre à modifier et à adapter est "Repertoire.Text" et que je récupère l’objet avec "GetData" mais le n'y arrive pas je ne suis pas familier avec le drag and drop.

  8. #8
    Membre émérite
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Saône et Loire (Bourgogne)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 562
    Par défaut
    Je pars du principe que tu as une méthode qui s'appel TraiterFichier qui prend un path et qui correspond à ta méthode de traitement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    private void TraiterFichier(string path)
    {
    //je test sont existence et les droits d'accès 
    ...
    //je place le nom du fichier dans un label
    ...
    //Je fais le traitement
    }
    Du coup pour traiter ton fichier après un drag and drop =>

    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
            private void panel1_DragEnter(object sender, DragEventArgs e)
            {
                if (e.Data.GetDataPresent(DataFormats.FileDrop)) //On accepte que les fichiers.            {
                    e.Effect = DragDropEffects.Copy;
                }
                else
                {
                    e.Effect = DragDropEffects.None;
                }
    
            }
     
            private void panel1_DragDrop(object sender, DragEventArgs e)
            {
                if (e.Data.GetDataPresent(DataFormats.FileDrop)) //On accepte que les fichiers.            {
                    string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
                    try
                    {
                         foreach(string path in files)
                         {
                              TraiterFichier(path);
                        }                
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message);
                        return;
                    }
                }
            }

    Fais fonctionner ton drag& drop et ensuite je pense que du devra faire soit du backgroundworker soit du async/await suivant le framework que tu utilise pour que ton interface ne soit pas bloquée pendant le traitement et pas que l'appli affiche le fameux : Ne répond pas

    J@ck.

Discussions similaires

  1. DragDrop depuis une application vers Windows Explorer
    Par djiga4me dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 02/01/2013, 19h32
  2. Réponses: 2
    Dernier message: 15/06/2011, 15h54
  3. Réponses: 3
    Dernier message: 20/12/2010, 09h21
  4. migration de web services vers windows forms
    Par diamentelle dans le forum Windows Forms
    Réponses: 0
    Dernier message: 18/03/2009, 01h28
  5. 2 application vers 1 form
    Par Otarie dans le forum C++Builder
    Réponses: 3
    Dernier message: 20/07/2005, 11h44

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