2016-12-18 1 views
0

J'ai 2 formulaires, Formulaire principal & ModalBox.Utilisation d'un événement personnalisé pour dessiner des formes sous une autre forme C#

Dans la forme principale J'ai un bouton qui, lorsqu'il est cliqué, dessine une forme en fonction de l'index sélectionné de la comboBox.

// Create Rectangle or Ellipse 
    public void buttonAdd_Click(object sender, EventArgs e) 
    { 
     SolidBrush sb = new SolidBrush(Color.Red); 

     Graphics g = panel1.CreateGraphics(); 

     if (shapeSizeControl1.comboBoxShapeSelection.SelectedIndex == 0) 
     { 
      g.FillRectangle(sb, Convert.ToSingle(shape.X), Convert.ToSingle(shape.Y), Convert.ToSingle(shape.Width), Convert.ToSingle(shape.Height)); 
     } 
     else if (shapeSizeControl1.comboBoxShapeSelection.SelectedIndex == 1) 
     { 
      g.FillEllipse(sb, Convert.ToSingle(shape.X), Convert.ToSingle(shape.Y), Convert.ToSingle(shape.Width), Convert.ToSingle(shape.Height)); 
     } 
    } 

Dans la forme ModalBox j'ai un bouton Ok qui devrait faire la même chose que le bouton dans le formulaire principal, mais il ne fonctionne pas parce que je ne sais pas comment le programme pour le faire.

Ce que j'ai essayé ..

  1. Copie du même code principal du formulaire buttonAdd_Click dans ModalBox buttonOk_Click. Mauvaise idée car je dois instancier un nouveau formulaire principal pour obtenir la variable panel1. Si je fais cela, rien ne se passe. Pourquoi? Je ne suis pas sûr qu'une explication serait géniale.

  2. Création d'un événement personnalisé lors de l'ouverture du formulaire ModalBox, une fois que j'appuie sur le bouton OK depuis son abonnement Il dessine la forme. 1 problème Je n'ai aucune idée de l'endroit où appeler l'événement et vérifier null car le bouton est sur le deuxième formulaire donc Si j'appelle l'événement personnalisé dans le premier formulaire je n'ai aucun endroit pour appeler l'événement et faire la vérification nulle.

Objectif

Mon but est de savoir comment ajouter des formes dans le formulaire principal du formulaire ModalBox en utilisant le bouton Ok dans le formulaire ModalBox.

Répondre

0

Il suffit de créer une méthode DrawShape() dans le formulaire principal qui dessine vos formes et l'appelle à partir du clic de bouton.

// Main Form 
private void button1_Click(object sender, EventArgs e) 
{ 
    DrawShape(); 
} 

Créez maintenant le formulaire modal et définissez le propriétaire

// Main form 
private void button2_Click(object sender, EventArgs e) 
{ 
    var dlg = new ModalBox(); 

    if (dlg.ShowDialog(this)==DialogResult.OK) 
    { 
     // do things 
    } 
} 

Enfin sous forme modale appeler la fonction DrawShape()

// Modal form 
private void button1_Click(object sender, EventArgs e) 
{ 
    var parent = this.Owner as MainForm; 
    parent.DrawShape(); 
} 
+0

PS. Pour le faire correctement, vous devez vous abonner à l'événement 'Paint' du formulaire et faire le dessin ici. – ja72