Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1130 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [c#] Petit probléme lors de l'affichage d'une boite de dialogue?

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[c#] Petit probléme lors de l'affichage d'une boite de dialogue?

n°1984287
MonalizaFs​t
Posté le 15-04-2010 à 12:32:18  profilanswer
 

Bonjours à tous,
je suis en train de developpez une application winform en c# sur visual studio 2008, c'est une interface qui contient des boutons chacune se charge de dessiner une forme(cercle, ligne...) quand je clique par le boutton droite sur une cercle par exemple j'ai fait afficher un panel (comme le dialogue boxes) qui demande de l'utilisateur d'entrer le nom de cette cercle mais le problème c'est que l'affichage de ce panel dans un emplacement de la formulaire fait effacer la forme qui été dessiné dans cette endroit( c'est comme un gomme) même si j'ai créé une autre formulaire et je l'ai utiliser comme boite de dialogue au lieu de ce panel j'ai trouver le même problème, je sais pas comment faire  :??:  
Voilà c'est une partie du code éxecutable qui contient ce qui concerne la création des cercles. La formulaire cotient un boutton cercle et 2 textes boxes 1 et 2 pour afficher les coordonnées d'un clique qu'aprés laquelle le cercle traçé et un panel qui contient un label" entrer le nom" et un texteboxe 3 pour taper le nom et un boutton ok pour écrire le nom dejà entré au milieu du cercle positionné ce panel s'affiche suit à un clique par le boutton droite sur une point appatenant au cercle) j'éspere que j'ai bien expliquée et voilà le code:
 
 

Code :
  1. namespace projet1
  2. {
  3.     public partial class Form1 : Form
  4.     {
  5.    public Form1()
  6.         {
  7.             InitializeComponent();
  8.             CercleButton.Click += new EventHandler(CercleButton_Click);
  9.         }
  10.       private void CercleButton_Click(object sender, EventArgs e)
  11.         {
  12.             this.MouseClick += new MouseEventHandler(Form1_MouseClick);
  13.         }
  14.          void Form1_MouseClick(object sender, MouseEventArgs e)
  15.         {
  16.             this.MouseClick -= new MouseEventHandler(Form1_MouseClick);
  17.             drawCircle(e.X, e.Y);
  18.             textBox1.Text = e.X.ToString();
  19.             textBox2.Text = e.Y.ToString();
  20.         }
  21.      private void drawCircle(int x, int y)
  22.         {
  23.             Graphics g;
  24.             g = CreateGraphics();
  25.             Rectangle myRectangle = new Rectangle(x, y, 50, 50);
  26.             Pen myPen = new Pen(Color.BlueViolet, 2);
  27.             SolidBrush sb1 = new SolidBrush(Color.BlanchedAlmond);
  28.             g.FillEllipse(sb1, myRectangle);
  29.             g.DrawEllipse(myPen, myRectangle);
  30.             g.Dispose(); //libération de l'objet Graphics         
  31.         }
  32. private void Form1_MouseDown(object sender, MouseEventArgs e)
  33. {
  34. if (e.Button == MouseButtons.Right) //le bouton droit de la souris a été  utilisée
  35.    {
  36.          if (textBox1.Text == "" )
  37.         {
  38.          MessageBox.Show("il faut tracer une cercle " );
  39.          }
  40.   else {
  41.          
  42.           int xx = Convert.ToInt32(e.X.ToString());
  43.            int yy = Convert.ToInt32(e.Y.ToString());
  44.            int xtext = Convert.ToInt32(textBox1.Text);
  45.            int ytext = Convert.ToInt32(textBox2.Text);
  46.          
  47.   if ((xx >= xtext) & (xx <= xtext + 50) & (yy >= ytext) & (yy <= ytext + 50))
  48.   {
  49.     // pour verifier si le clique droite se fait au niveau du cercle ou pas
  50.        panel2.Visible = true;//le panel est affiché
  51.        panel2.Location = new Point(xtext + 55, ytext + 25);//le nom s'écrit à   l'interieur du cercle
  52.    }
  53.       else
  54.          {
  55.              panel2.Visible = false;//le panel ne s'affiche pas
  56.           }
  57.       }
  58.   }
  59. }
  60.           private void OkButton_Click(object sender, EventArgs e)
  61.           {
  62.              Graphics g;
  63.             g = CreateGraphics();
  64.             Rectangle myRectangle = new Rectangle(xtext + 8, ytext + 15, 50, 20);
  65.             g.DrawString(textBox3.Text, new Font("Arial Black", 9), new SolidBrush(Color.Black), myRectangle);
  66.             textBox3.Text = "";
  67.             panel2.Visible = false;
  68.             g.Dispose();
  69.            }
  70.    }
  71. }


 
 Est ce que quelqu'un peut m'aider? je serai vraiment très reconnaissante et merci d'avance.


Message édité par MonalizaFst le 15-04-2010 à 13:12:33
mood
Publicité
Posté le 15-04-2010 à 12:32:18  profilanswer
 

n°1984315
breizhbugs
Posté le 15-04-2010 à 13:58:59  profilanswer
 

Je crois qu'il faut que tu dessines tes cercles dans la fonction paint() de ta forme, qui elle, est appelée à chaque fois qu'il y a besoin de redessinée la fenetre lorsque par exemple une autre fenetre la cache partiellement.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [c#] Petit probléme lors de l'affichage d'une boite de dialogue?

 

Sujets relatifs
Maven probleme de version ?Panne du système de login sur un forum phpbb
Problème Java (Unknow Source)Partager l'affichage d'application
[BATCH] creation de repertoires par parcours de fichier texteDreamreaver problème de proportion
Probleme Nextfram PreviousFramAide d'affichage de données dans textbox
[php] Problème affichage tableau avec timer 
Plus de sujets relatifs à : [c#] Petit probléme lors de l'affichage d'une boite de dialogue?


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR