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 :

C# Windows Forms utilisation d'événements


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 3
    Par défaut C# Windows Forms utilisation d'événements
    Bonjour tout le monde,

    Je débute en programmation, pour m'entraîner j'ai crée un projet console que je passe maintenant sur Windows Forms. J'ai un problème de compréhension ou de logique pour la gestion des événements.
    Mon application se compose principalement d'un label, qui sert à l'affichage de texte, d'une textbox pour la saisie de l'utilisateur et d'un bouton "suivant" qui doit permettre de faire défiler "l'histoire" dans le label.
    C'est justement cette partie que je n'arrive pas à générer.

    En clair je souhaiterais que le clique sur le bouton suivant génère la partie suivante de l'histoire (step by step). Et c'est là que je me heurte à un problème de logique. Il y a une méthode créée pour l'événement btnSuivant_Click, ce qui implique qu'à chaque clique de l'utilisateur sur ce bouton le programme lira le code depuis le début de la méthode. Donc il reprendra l'histoire depuis le début.
    J'imagine que la solution est toute bête mais malgré de nombreuses recherches je n'ai trouvé aucune réponse pour obtenir ce que je souhaite.

    Voici le code actuel de mon Form1.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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
            public FormPrincipale()
            {
                InitializeComponent();
            }
     
            private void AfficherFormPrincipale()
            {
                FormPrincipale fp = new FormPrincipale();
                fp.Show();
            }
     
            private void FormPrincipale_Load(object sender, EventArgs e)
            {
                lblAffichageHistoire.Text = "Bienvenue, quel est votre nom?";
     
            }
     
            private void MenuOptionNouveau_Click(object sender, EventArgs e)
            {
                this.AfficherFormPrincipale();
            }
     
            private void MenuOptionQuitter_Click(object sender, EventArgs e)
            {
                this.Close();
            }
     
            private void MenuOptionManuel_Click(object sender, EventArgs e)
            {
                System.Diagnostics.Process.Start("C:/Users/Olivier/Documents/Visual Studio 2015/Projects/slnLudovic/prjLudovicWindowsForms/Resources/ManuelUtilisateur.pdf");
            }
     
            private void btnSuivant_Click(object sender, EventArgs e)
            {
                name = txtSaisieUser.Text;
                lblAffichageHistoire.Text = string.Format("{0}, L'histoire commence à présent...", name);
            }

    J'espère que ma demande est suffisamment clair, n'hésitez pas à me demander si quelque chose manque.

    Je vous remercie par avance pour votre aide et vous souhaite une bonne fin de journée

  2. #2
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 479
    Par défaut
    Salut, utilises les balises code #

    Personnellement je ne comprends pas bien car tu parles d'histoire mais je ne vois nulle par cette notion ?
    Est-ce que tu dois charger l'histoire depuis un fichier ? Puis simuler les pages et donc afficher l''histoire morceau par morceau ?

    A+

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 3
    Par défaut
    Bonjour,

    C'est modifié, désolé.

    Ce sera sûrement plus clair maintenant que j'ai mis la balise.

    J'ai déjà écrit une partie de l'histoire dans le projet console, mais ici n'apparaît que les deux premières phrases puisque, bloqué par le problème en question, je ne peux avancer d'avantage.

    L'histoire serait donc implémentée directement dans le code et je souhaiterais faire défiler l'histoire à l'aide du bouton suivant. Ceci dit ce que je souhaite n'est peut être pas possible sous cette forme là. En console on peut taper du console.writeline à tout va et mettre des pauses readline afin que l'utilisateur valide et passe à la suite. C'est ce que j'essaie plus ou moins de reproduire dans Windows Forms dans le déroulement.

    Est-ce que cela répond à votre question?

    Merci

  4. #4
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    Ou se trouve l'histoire ? Dans plusieurs variable string, un tableau de string une liste de string autre chose ?
    Le bouton suivant doit seulement modifier l'affichage du texte afficher à l'utilisateur ?
    A quoi sert la textbox ?

  5. #5
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2005
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2005
    Messages : 482
    Par défaut
    Salut,
    c'est à toi de définir comment fonctionnera ton histoire.
    Prenons un cas simple, tu as un bouquin sur ta table de chevet.
    A chaque fois que tu allumes la lampe (click sur le bouton...) tu commences à lire ton livre.
    Evidemment, (dany boon l'a bien compris !) il existe des marque pages.
    Donc, la fois d'avant tu avais mis un marque (ta) page à la page ou tu t'es arrêté.

    La logiques est donc :
    1- La lampe s'allume (click...)
    2- (dans l'évennement click) je dois lire le bouquin :
    y a t'il un marque page ? :
    NON : je lis le bouquin depuis le début
    OUI : je lis le bouquin à partir de la page/ligne/caractère 'X'
    dans tous les cas, mon histoire a avancé d'une page/ligne/caractère, je met mon marque page à jour pour la prochaine fois que j'allumerais la lampe.

    si tu recliques tu repasses à l'étape 1...........

    tout dépend de comment tu veux découper ton histoire :
    par bloc de texte ? => ton marque page enregistrera le numéro de ton bloc de texte
    par ligne ? => ton marque page enregistrera... ligne
    par nombre de caractères ? => le numéro du dernier caractère lu

    dans ton (court) exemple tu as stocké ton histoire dans un label, ce qui ne permet évidemment pas de faire grand chose (en tout cas le marque page n'est pas très utile...).
    D'où vient ton histoire ? comment est-elle stockée ? etc...

  6. #6
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2005
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2005
    Messages : 482
    Par défaut
    imaginons que tu as stocké ton histoire dans ton code sous la forme d'une liste de textes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    List<String> monHistoire = new List<String>();
    monHistoire.Add("Pique et Pique et collegram");
    monHistoire.Add("bourre et bourre et ratatam");
    monHistoire.Add("Si la reine et le roi ne le veut pas");
    monHistoire.Add("Ca ne sera pas toi");
    //et là Lucille s'abat !
    tu as un marque page tout simple : il retient juste le numéro de la ligne
    il n'a encore jamais servi, il est donc à -1 (emplacement qui ne peut pas exister dans une liste qui commence à '0')

    au premier clique, tu regardes sa valeur : si c'est '-1' il n'a jamais servi, il faut donc lire la liste depuis le début (monHistoire[0] ou mieux : monHistoire[MarqueTaPage + 1])
    puis tu incrémentes ton marque page : MarquePage++ ou MarquePage = MarquePage + 1 c'est pareil.
    au prochain clique, ton marque page vaudra non plus '-1', mais '0', puis '1' etc...
    comme tu lis l'emplacement monHistoire[MarqueTaPage +1], tu liras la première ligne , puis la deuxième etc...

    tu peux aussi ajouter un bouton qui ne fera que remettre ton marque page à '-1' si tu veux relire l'histoire depuis le début

  7. #7
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2005
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2005
    Messages : 482
    Par défaut
    évidemment ces deux variables doivent être visibles partout, donc définies hors de ta fonction/evennement Click.

  8. #8
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 3
    Par défaut
    Merci à tous pour vos réponses.

    Merci pour ta solution Themacleod1980, j'ai pu avancer dans mon projet avec ça .

Discussions similaires

  1. Réponses: 0
    Dernier message: 11/12/2010, 12h58
  2. Réponses: 3
    Dernier message: 20/03/2007, 13h30
  3. Réponses: 1
    Dernier message: 12/01/2007, 21h40
  4. [C#] utilisation de la souris dans une windows form
    Par dimmak dans le forum Windows Forms
    Réponses: 2
    Dernier message: 26/03/2006, 23h21
  5. Réponses: 4
    Dernier message: 07/03/2006, 15h54

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