Partage
  • Partager sur Facebook
  • Partager sur Twitter

[C#]événement paint

    23 septembre 2006 à 16:47:08

    Bonjour à tous, j'ai une petite question à vous poser: est ce que ça serait possible d'envoyer une variable (que ça soit une chaîne de caractère ou un nombre) dans un événement paint?
    Le but du programme serait de demander à l'utilisateur d'écrire une phrase (qui sera stoquée dans une variable string) dans une console et ensuite dans l'événement Paint l'afficher sur une fenêtre.
    Est-il possible?
    Merci de vos réponses
    • Partager sur Facebook
    • Partager sur Twitter
      23 septembre 2006 à 20:38:59

      Si tu utilise WinForms je suppose que tu as sous classer Form ? Dans ce cas pourquoi ne pas simplement utiliser la propriété Text d'un contrôle pour pouvoir y écrire la donnée du clavier ? Genre :

      using System;
      using System.Drawing;
      using System.Windows.Forms;

      class MyForm : Form
      {
          // ...
          // Du code ici
          //


          // Un widget quelconque pour afficher
          private TextBox text = new TextBox();

          public static void Main()
          {
              Console.WriteLine("Entrez un texte");

              text.Text = Console.ReadLine();
              Application.Run(new MyForm());
          }

      }


      Néanmoins il faut compiler avec /t:exe et non /t:winexe
      • Partager sur Facebook
      • Partager sur Twitter
        23 septembre 2006 à 23:40:03

        J'ai essayé, mais après comment afficher ce text.Text dans la fenêtre?
        Dans un événement Paint normalement on peut écrire quelque chose graçe à l'instruction: object.DrawString("Chaîne de caractères");
        Mais comme la variable string se trouve dans la méthode Main, je n'arrive pas à l'envoyer dans l'événement paint pour qu'il l'affiche.
        Voilà mon problème...
        • Partager sur Facebook
        • Partager sur Twitter
          24 septembre 2006 à 11:25:35

          Chaque widget que tu place dans une fenêtre possède une propriété Text qui permet de lui mettre un texte dessus. Donc tu peux faire : uncontrolelambda.Text = "mon texte"; en prenant n'importe quel texte qu'il vienne d'un contrôle, d'un fichier, d'une entrée console etc...

          Sinon essaie de poster ton code que je vois ce qui coince (object n'a pas de méthode DrawString()).
          • Partager sur Facebook
          • Partager sur Twitter
            24 septembre 2006 à 11:57:46

            voilà le code:

            Citation : Code C#

            using System.Windows.Forms;
            using System;
            using System.Drawing;

            class PaintEvent
            {
            public static void Main()
            {
            string str;
            Form fenetre= new Form();
            Console.WriteLine("Entrez un texte");
            str= Console.ReadLine();

            fenetre.Text= "Événement Paint";
            fenetre.Paint += new PaintEventHandler(string str, MyPaintHandler);

            Application.Run(fenetre);
            }

            static void MyPaintHandler(string str, object objSender, PaintEventArgs pea)
            {<code></code>
            Graphics gr= pea.Graphics;
            gr.Clear(Color.Aqua);

            Form fenetre= (Form)objSender;

            gr.DrawString(str, fenetre.Font, Brushes.Black, 5,5);
            }
            }



            je crois que le code est mal indenté, mais le problème c'est que je n'arrive pas à le faire!!!

            Le code que tu m'a dit, widget.Text (widget c'est un nom au hsard), n'affiche pas plutôt un titre en haut d'une fenêtre???
            Parce que ça j'arrive très bien à le faire, mais moi je veux afficher un texte dans une fenêtre, pas dans la birre de titre d'une feneêtre.
            • Partager sur Facebook
            • Partager sur Twitter
              24 septembre 2006 à 12:07:10

              Ouais tu essaie de faire ca à la manière crade :D , je vais te montrer une méthode plus simple, j'éditerai pour poster le code.

              Voilà par exemple :
              using System;
              using System.Drawing;
              using System.Windows.Form;

              class Test : Form
              {
                      private Label widget = new Label();
                             
                      public Test() : base()
                      {
                              widget.Text = "foo";
                              this.Controls.Add(wiget)
                      }
                     
                      private static void Main()
                      {
                              Console.WriteLine("Entrez un truc");
                              widget.Text = Console.ReadLine();
                             
                              Application.Run(new Test());
                      }
              }


              Le contrôle Label montre un texte statique de ton choix via la propriété Text. Dans le cas de Form oui Text paramètre en fait le titre (défaut de conception AMHA).
              • Partager sur Facebook
              • Partager sur Twitter
                24 septembre 2006 à 14:00:25

                Merci de ton code, mais j'avais déjà trouvé.
                J'ai tout simplement utilisé une variable globale que j'ai modifié dans la méthode Main et affiché à l'écran dans l'événement Paint

                Mais merci quand même!!!
                • Partager sur Facebook
                • Partager sur Twitter

                [C#]événement paint

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown