MonalizaFst | 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 :
- namespace projet1
- {
- public partial class Form1 : Form
- {
- public Form1()
- {
- InitializeComponent();
- CercleButton.Click += new EventHandler(CercleButton_Click);
- }
- private void CercleButton_Click(object sender, EventArgs e)
- {
- this.MouseClick += new MouseEventHandler(Form1_MouseClick);
- }
- void Form1_MouseClick(object sender, MouseEventArgs e)
- {
- this.MouseClick -= new MouseEventHandler(Form1_MouseClick);
- drawCircle(e.X, e.Y);
- textBox1.Text = e.X.ToString();
- textBox2.Text = e.Y.ToString();
- }
- private void drawCircle(int x, int y)
- {
- Graphics g;
- g = CreateGraphics();
- Rectangle myRectangle = new Rectangle(x, y, 50, 50);
- Pen myPen = new Pen(Color.BlueViolet, 2);
- SolidBrush sb1 = new SolidBrush(Color.BlanchedAlmond);
- g.FillEllipse(sb1, myRectangle);
- g.DrawEllipse(myPen, myRectangle);
- g.Dispose(); //libération de l'objet Graphics
- }
- private void Form1_MouseDown(object sender, MouseEventArgs e)
- {
- if (e.Button == MouseButtons.Right) //le bouton droit de la souris a été utilisée
- {
- if (textBox1.Text == "" )
- {
- MessageBox.Show("il faut tracer une cercle " );
- }
- else {
-
- int xx = Convert.ToInt32(e.X.ToString());
- int yy = Convert.ToInt32(e.Y.ToString());
- int xtext = Convert.ToInt32(textBox1.Text);
- int ytext = Convert.ToInt32(textBox2.Text);
-
- if ((xx >= xtext) & (xx <= xtext + 50) & (yy >= ytext) & (yy <= ytext + 50))
- {
- // pour verifier si le clique droite se fait au niveau du cercle ou pas
- panel2.Visible = true;//le panel est affiché
- panel2.Location = new Point(xtext + 55, ytext + 25);//le nom s'écrit à l'interieur du cercle
- }
- else
- {
- panel2.Visible = false;//le panel ne s'affiche pas
- }
- }
- }
- }
- private void OkButton_Click(object sender, EventArgs e)
- {
- Graphics g;
- g = CreateGraphics();
- Rectangle myRectangle = new Rectangle(xtext + 8, ytext + 15, 50, 20);
- g.DrawString(textBox3.Text, new Font("Arial Black", 9), new SolidBrush(Color.Black), myRectangle);
- textBox3.Text = "";
- panel2.Visible = false;
- g.Dispose();
- }
- }
- }
|
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
|