Problème avec l'affichage d'une image

Gawin46 Messages postés 4 Date d'inscription mercredi 15 décembre 2010 Statut Membre Dernière intervention 16 décembre 2010 - 16 déc. 2010 à 00:11
Gawin46 Messages postés 4 Date d'inscription mercredi 15 décembre 2010 Statut Membre Dernière intervention 16 décembre 2010 - 16 déc. 2010 à 17:12
Bonjour,
je suis débutant en C# et je travail avec Visual Studio 2008 et SQL server 2005. voilà je vous expose mon problème: j ai une datagriedview qui se connecte à une BDD donc jusque là tout va bien. Ensuite j ai fait en sorte que dès que je clique sur une ligne les données de celle-ci soient reporté dans la partie inférieur de la fenêtre ou se trouve des TextBox. Afin de les faire afficher dans les TextBox, j’utilise une requête sql dans l'évènement CellEnter. Tous s affiche correctement sauf les images que je place dans des pictureBox.
        private void dgv_TELEPHONES_CellEnter(object sender, DataGridViewCellEventArgs e)
        {
            this.dgv_TELEPHONES.Rows[e.RowIndex].Selected = true;

            string numAccessoires = dgv_TELEPHONES.Rows[e.RowIndex].Cells[0].Value.ToString();


            SqlConnection maconnection = new SqlConnection("Data Source=.\\SQLEXPRESS;Initial Catalog=Privacom;Integrated Security=True");

            try
            {
                maconnection.Open();
                SqlCommand macommande = new SqlCommand();
                macommande.Connection = maconnection;
                macommande.CommandText "SELECT TELEPHONES.TELPRONUM, MATERIELS.MATMARQUE, MATERIELS.MATMODELE, MATERIELS.MATQTESTOCK, MATERIELS.MATPRIXVENT,MATERIELS.MATOPTION,MATERIELS.MATPRIXACHAT, MATERIELS.MATSEUILCOMMANDE FROM TELEPHONES INNER JOIN MATERIELS ON TELEPHONES.TELPRONUM MATERIELS.MATPRONUM INNER JOIN PRODUITS ON MATERIELS.MATPRONUM = PRODUITS.PRONUM WHERE (PROSTATUS='Actif')AND(TELPRONUM= '" + numAccessoires + "')";

                SqlDataReader telephone = macommande.ExecuteReader();
                telephone.Read();

                TB_TELMATPRONUM.Text = telephone["TELPRONUM"].ToString();
                TB_TELMATMARQUE.Text = telephone["MATMARQUE"].ToString();
                TB_TELMATMODELE.Text = telephone["MATMODELE"].ToString();
                TB_TELMATOPTION.Text = telephone["MATOPTION"].ToString();
                TB_TELMATPRIX.Text = telephone["MATPRIXVENT"].ToString();
                TB_TELMATSTOCK.Text = telephone["MATQTESTOCK"].ToString();
                PB_TEL = telephone["MATIMAGE"];
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                maconnection.Close();
            }


voilà le message d'erreur:

Impossible de convertir implicitement le type 'object' en 'System.Windows.Forms.PictureBox'. Une conversion explicite existe (un cast est-il manquant ?)

Je comprends le problème mais je sais pas comment le résoudre donc si vous pourriez m'aider SVP!!!

4 réponses

Shaolyne Messages postés 155 Date d'inscription jeudi 12 mai 2005 Statut Membre Dernière intervention 8 mars 2011 1
16 déc. 2010 à 07:47
Essaye ceci:
PB_TEL.Image = telephone["MATIMAGE"] as Image;

Ton problème est lié au fait que le compilateur ne peut pas assigner une valeur de type Object (telephone["MATIMAGE"]) à une variable de type PictureBox (PB_TEL). Il te faut alors spécifier un cast explicite au niveau de ta valeur de type Object. Pour ce faire, tu peux utiliser l'instruction as qui te renvoie null si le casting a échoué et la variable assignée dans le bon type dans le cas contraire.

Par contre, je me pose la question suivante: Que sauves-tu en base au niveau de la colonne MATIMAGE? Une image (format binaire)? Si c'est une image, il te faut alors assigner la propriété image de ta picturebox (cfr section code au début de ma réponse).

Une petite remarque en passant, pourquoi utilises-tu des noms en majuscules pour chacun de tes composants graphiques? cette convention de nommage est généralement utilisée pour identifier des constantes, ce qui n'est pas le cas, si?

Shao.
0
Gawin46 Messages postés 4 Date d'inscription mercredi 15 décembre 2010 Statut Membre Dernière intervention 16 décembre 2010
16 déc. 2010 à 16:45
Ok merci pour ta réponse rapide, je vais tester ça. Je suis vraiment débutant dans le domaine de la programmation donc je ne connais pas toutes les conventions. Je ferais attention à l'avenir.
0
Gawin46 Messages postés 4 Date d'inscription mercredi 15 décembre 2010 Statut Membre Dernière intervention 16 décembre 2010
16 déc. 2010 à 16:59
Donc j'ai tester le code que tu ma dit mais aucune image s'affiche. Le message d'exception me marque "MATIMAGE" rien d'autre donc je peu même pas savoir d'où vient le problème. Pour les infos sur les images: ce sont des images qui sont sur mon disque local de type .jpg. J ai indiqué dans ma BDD dans l'attribut "Image" le chemin (C:...).
0
Gawin46 Messages postés 4 Date d'inscription mercredi 15 décembre 2010 Statut Membre Dernière intervention 16 décembre 2010
16 déc. 2010 à 17:12
Désolé, j'ai poster un peu vite!! Donc maintenant plus de problème avec l'exception le programme se lance. J'ai fait une erreur de débutant je ne ai pas appeler "MATIMAGE" dans ma requête. Par contre aucune image ne s'affiche. Et si j'ai bien compris de ton explication, ça veut dire que mon cast me renvoie une valeur null? (pourrais tu m'expliquer en passant qu'est que c'est le cast?).
0
Rejoignez-nous