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

Petit probléme lors de l'affichage d'une boite de dialogue? [c#] - C#/.NET managed - Programmation

Marsh Posté le 15-04-2010 à 12:32:18    

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
Reply

Marsh Posté le 15-04-2010 à 12:32:18   

Reply

Marsh Posté le 15-04-2010 à 13:58:59    

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.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed