2013-05-21 1 views
0

J'ai un petit projet en C#, (Windows Forms Application). J'ai sur le formulaire 77 PictureBoxes (pictureBox1, pictureBox2, pictureBox3, ...) et je veux les contrôler mais à partir d'une nouvelle classe (Access.cs), en déclarant une nouvelle picturebox dans la classe pour contrôler toutes les images. Parce que ce serait trop long si je passais à travers chaque PictureBox et ajouter une méthode de clic et copier + coller le code et changer le nombre de pictureBox chaque fois.Contrôle d'un PictureBox à partir d'une classe

J'ai mis les photos que public et essayé le code suivant:

Access.cs:

using System.Windows.Forms; 

public class Access 
{ 
    PictureBox picBox = new PictureBox(); 

    public void PictureClicked() 
    { 
     picBox.Image = Properties.Resources.apple; 
    } 
} 

Form1.cs:

private void pictureBox1_Click(object sender, EventArgs e) 
{ 
    Access ac = new Access(); 
    ac.PictureClicked(); 
} 

mais le code n'a pas travail!!

+0

Et que s'est-il passé quand vous avez essayé ce code? D'un côté, pourquoi tant de boîtes? Avez-vous vraiment besoin de tous? –

+0

Pourquoi ne pouvez-vous pas convertir l'objet expéditeur et l'envoyer en tant que paramètre à votre méthode PictureClicked? –

+0

le code n'a pas fonctionné .. malheureusement oui !! – John

Répondre

3

je nai vraiment obtenir ce que vous voulez faire, mais vous pouvez essayer d'envoyer l'objet à votre classe d'accès:

private void pictureBox1_Click(object sender, EventArgs e) 
{ 
    Access ac = new Access(); 
    ac.PictureClicked(sender); 
} 


public void PictureClicked(Object Sender) 
{ 
      picBox = (PictureBox)Sender; 
      picBox.Image = Properties.Resources.apple; 
} 
+0

je vous remercie pour le code :) – John

+0

Je suis heureux d'aider –

+0

après avoir écrit votre code je l'ai déclaré dans la classe: Form1 myForm = new Form1(); pour utiliser imageList1 à partir du formulaire. mais quand je débogue le programme, j'obtiens une exception StackOverFlowException. et quand je démarre le programme sans déboguer une fenêtre apparaît me disant que le programme a cessé de fonctionner. Sais-tu pourquoi? – John

1

Access.Cs

public void pictureBox1_Click(object sender, EventArgs e) 
     { 
      PictureBox pi = (PictureBox)sender; 

      pi.Image = Properties.Resources.alert__2_; 
     } 

form1.cs

private void pictureBox2_Click(object sender, EventArgs e) 
     { 
      Form1 c =new Form1(); 
      c.pictureBox1_Click(sender, e); 


     } 

Voici pictureBox2_Cliquez sur cet événement pour toutes les images

Questions connexes