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

  1. #1
    Candidat au Club
    sauvegarder chez le client un formulaire renseigné par lui même pour le revisionner plus tard
    bonjour à tous,
    pour ceux que cela intéresserait, ils peuvent consulter ma présentation

    alors voilà, comme je debute en C#, je suis tout de même parvenu à réaliser un petit formulaire qui propose à un utilisateur de faire ses grilles de paris de jeux. apres deux bonnes journées à comprendre le fonctionnement de vs2019 community et surtout winform, j'ai réalisé un exemple simple qui s'articule autour d'une grille de "foot" et le formulaire propose de renseigner deux valeurs
    1/ le nombre de matchs
    2/ le nombre de paris
    ensuite, ce formulaire s'incrémente d'autant de ligne (nombre de match) et de colonnes de combobox pour le nombre de paris (choix 1 n ou 2) .
    ma demande est donc de pourvoir sauvegarder cette grille utilisateur apres avoir rempli le formulaire et de pouvoir le revoir plus tard ou l'archiver ou etc
    bref, un petit executable (ça c'est bon), tout simple, et qui pourrait permettre à l'utilisateur de revoir les dernieres grilles réalisés (en gros, revoir le formulaire entier avec ces choix)

    voilà, si je peux vous éclairer un peu plus ... n'hesitez pas ! et merci d'avance.

  2. #2
    Expert éminent sénior
    Bonjour,
    Je pense que tu peux utiliser SqlLite pour ça.
    Il y a tout ce qu'il faut en C# pour l'utiliser, et c'est moins "prise de tête" que d'installer un "vrai" SGBD.

    Tatayo.

  3. #3
    Candidat au Club
    bonsoir et merci tatayo pour ta réponse

    on peut donc envoyer via l'executable une petite table que va lire le sqlite client de microsoft et qui sauvegardera ses grilles réalisées c'est cela ?

  4. #4
    Membre chevronné
    Ou bien sauvegarder au format json.

  5. #5
    Candidat au Club
    bonjour et merci bien.
    j'ai effectivement déjà utilisé sql (version mysql) et json dans le php. je n'ai pas encore tranché la question puisque mon projet n'est pas encore formalisé entierement. je decouvre le c# et surtout vs2019 ... c'est pas une mince affaire mais heureusement qu'il y a de bons tutos (docs microsoft par exemple)
    pour l'instant je bloque sur le centrage dans le form de l'execution d'une boucle qui fournit des combobox. ils apparaissent bien comme ils faut mais je souhaiterais que l'ensemble des combobox soit centré dans le form et ... j'ai pas encore trouvé ! si une bonne âme me donne une piste (anchor, dock, position et j'en passe) je suis preneur ^^

    bonne fin de journée

  6. #6
    Membre émérite
    pour centrer un contrôle
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    myControl.Left = (mycontrol.Parent.Width - myControl.Width) / 2 ;
    myControl.Anchor  = AnchorStyles.None;

    ou s'il est directement sur la form
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    myControl.Left = (ClientSize.Width - myControl.Width) / 2 ;
    myControl.Anchor  = AnchorStyles.None;

  7. #7
    Candidat au Club
    merci, super .... je vais pouvoir tester cela

    mon petit projet (petit débutant également) bloque sur un souci de récupération (ou transfert) d'un petit tableau (item) appartenant à form2_load vers un évènement button1_click pour pouvoir l'enregistrer dans sqlite (merci tatayo ça fonctionne super)
    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
     
            public void Form2_Load(object sender, EventArgs e)
            {
                .......
     
                item[i] = tableau.SelectedItem.ToString();  
                .......    
            }
     
             public void button1_Click(object sender, EventArgs e)
            {
                    ...............
                    for (int i = 0; i < Form1.paris; i++)
                    {
                        command.Parameters.AddWithValue("@" + i, item[i]);
                    }   
                    ...........                             
                    command.ExecuteNonQuery();
     
           }


    voilà en fait le projet tourne évidemment sans erreur si je remplace ce petit tableau (item[i]) par i tout simplement. mais comme j'ai besoin du contenu de ce tableau pour avoir le résultat de l'item sélectionné dans form2, et après avoir usé toute la littérature Anglo française sur divers sujet comme le passage par paramètre (propriété tag pour le bouton mais ça ne marche pas dans ce sens là ^^) ou encore créer un évènement, une variable dite "globale" qui en fait ne s'instancie pas au fur et a mesure du programme comme le ferait le langage php .... bref ... tant d'exemples qui nous instruit mais qui ne m'explique pas comment cela est réalisable simplement (si c'était simple, la littérature serait abondante je pense ) et puis la découverte d'un langage 'objet' me perturbe vraiment par rapport au php ....

    bref, si vous avez une méthode, d'abord expliqué en bon langage français avant de me proposer du code (je préfère poser les questions au fur et à mesure) je suis preneur pour débloquer la situation :

    je vous souhaite une bonne soirée (nuit) à tous

  8. #8
    Membre émérite
    Tout est résumé dans cette simple phrase.
    Citation Envoyé par cgr76 Voir le message
    et puis la découverte d'un langage 'objet' me perturbe vraiment par rapport au php ....
    La philosophie objet est radicalement différente de ce que à quoi tu est habitué.
    Et l'un des principe de base de la POO est l'encapsulation qui implique qu'un objet ne connait que ce qu'il gère lui même et ce qu'on lui fournit.
    Et en .Net, tout est un objet y compris les types scalaire comme une chaîne ou un entier.
    Tes écran 1 et 2 ne font pas exception (au passage, prend l'habitude de nommer explicitement les choses, ici tu n'a que deux fiches mais sur un projet plus important, ce sera compliqué de t'y retrouver si tu ne nommes pas les choses avec un nom clairement identifiable de manière unique et sans équivoque).

    Ce qui fait que si tu veux que Form2 connaisse des éléments de Form1, il faut lui fournir. Et il y a de nombreux moyens de le faire (au moins 5 qui me viennent spontanément à l'esprit)
    1 - En lui passant Form1 en paramètre.
    C'est une manière simple et rapide d'accéder aux membre publics de Form1.
    Mais cela reviens à utiliser un bazooka pour tuer une mouche, et je trouve personnellement cette pratique... (remplacer ceci par tous les jurons que vous voulez)
    2 - En déléguant cette responsabilité à un objet tiers
    Cela reviens à avoir un objet tiers global.
    Une manière plus élégante de faire cela est de faire un singleton.
    Mais, si pour une autre forme tu as besoin d'autres infos, tu vas multiplier les singleton qui à la base n'est pas fait pour ça (ou pire multiplier les variables globales)
    3 - Les demander dans le constructeur de Form2
    Cette solution est une de celle que tu dois envisager dans ce cas précis.
    Suivant le nombre d'info que tu as à passer, cela va soit multiplier les paramètre soit nécessiter la création d'un objet conteneur et c'est lui que tu demandes dans le constructeur de Form2.

    4 - Faire un objet conteneur que tu passe dans le Tag de Form2
    Le Tag est clairement fait pour stocker des objets.
    Donc ça reste une solution simple et pas trop moche.
    Cela impose la création d'un objet pour englober toutes les infos que tu as à passer.
    Cela impose un Cast du Tag lorsque tu l'utilise dans Form2

    5 - Déclarer des propriété publiques dans Form2 de même type que les info que tu veux passer et les fournir depuis Form1
    Cela implique que Form1 et Form2 partage la connaissance de ces types
    Cela implique de vérifier si la propriété a bien été fourni.
    Cela ne nécessite pas de Cast puisque le type est connu directement.
    Cela est également très simple à mettre en œuvre.
    C'est, selon moi, la méthode la plus propre.

  9. #9
    Candidat au Club
    bonjour et merci popo,

    j'etais justement en train de regarder ton précédent post pour "centrer" form2 à l'ecran sachant que je n'ai rien dans le designer ... mais je vais me débrouiller !

    j'apprécie grandement ton interêt pour mon petit projet qui est d'apprendre en m'amusant en réalisant quelque chose de simple (en apparence).
    ta définition sur la POO est très instructive mais le vocabulaire m'est encore trop étranger et la plupart des mots me sont totalement inconnus (je veux dire dans le contexte POO bien entendu)

    j'ai mis à jour le code dans mon autre post "recuperer des données d'une classe à une autre" et je vais poursuivre dans cette voie qui me semble la plus simple pour suivre l'evolution (puisque je souhaiterais l'aboutir mieux que ça si j'y arrive)
    j'ai donc utilisé la méthode get set pour le passage des variables mais je voudrais comparer avec la méthode par parametre pour aller de form2_load à bouton_click et là déjà je bloque sur cette petite définition : passage par parametre. les nombreuses litteratures sont trop souvent difficiles a aborder pour un débutant et j'utilise par exemple msdn, stackoverflow, csharp, openclassrooms, lsis etc ...

    bref, si tu veux bien, j'aimerais poursuivre sur l'autre post .... et si tu pouvais me donner quelques definitions avec quelques exemples sur :

    1/ parametre dans contructeur
    2/ Faire un objet conteneur que tu passe dans un Tag

    ça me permettrait de travailler sur la simplification et efficacité du projet .... pour commencer

    merci et bonne journée

###raw>template_hook.ano_emploi###