Liaison de données d’image à la boîte à images

J’ai essayé de lier l’image de la colonne “Image du demandeur” dans les “Détails du demandeur” de la série de données de l’dataset “dataset” via deux méthodes. Mais lorsque je lance l’application Formulaire, aucune image ne s’affiche dans la boîte à images “imgusr”. Mon nom de source de liaison est “bindSource”.

En supposant que le data_set récupère tout correctement, quel pourrait être le problème si l’image n’est pas chargée dans la boîte à images “imgusr”?

En outre, la propriété picturebox de sizeMode permet de “zoomer”.

private void Update_Load(object sender, EventArgs e){ data_set = blobj.srcforVU(); bindSource.DataSource = data_set; bindSource.DataMember = "Applicant's Details"; lbidvalue.DataBindings.Add(new Binding("Text", bindSource, "Applicant's ID", false)); //method 1 //Binding binding = new Binding("Image", bindSource, "Applicant's Image", true, DataSourceUpdateMode.OnPropertyChanged); //binding.Format += new ConvertEventHandler(binding_Format); //imgusr.DataBindings.Add(binding); //method 2 imgusr.DataBindings.Add(new Binding("Image", bindSource, "Applicant's Image", true)); tbfname.DataBindings.Add(new Binding("Text", bindSource, "First Name", true)); tblname.DataBindings.Add(new Binding("Text", bindSource, "Last Name", true)); tbgender.DataBindings.Add(new Binding("Text", bindSource, "Gender", true)); tbbdate.DataBindings.Add(new Binding("Text", bindSource, "Birth Date", true)); tbmob.DataBindings.Add(new Binding("Text", bindSource, "Mobile No", true)); tbadd.DataBindings.Add(new Binding("Text", bindSource, "Address", true)); tbcntry.DataBindings.Add(new Binding("Text", bindSource, "Country", true)); tbmstat.DataBindings.Add(new Binding("Text", bindSource, "Is Married", true)); tbspfname.DataBindings.Add(new Binding("Text", bindSource, "Spouse's First Name", true)); tbsplname.DataBindings.Add(new Binding("Text", bindSource, "Spouse's Last Name", true)); tbspage.DataBindings.Add(new Binding("Text", bindSource, "Spouse's Age", true)); tbchild.DataBindings.Add(new Binding("Text", bindSource, "No Of Children", true)); bindNavigator.BindingSource = bindSource; afterloadoptions(); } public void binding_Format(object sender, ConvertEventArgs e) { ssortingng path = (ssortingng)e.Value; e.Value = Image.FromFile(path); } 

La solution peut être aussi simple que cela:

 imgusr.DataBindings.Add(new Binding("Image", data_set, "yourtablename.yourcolumnname", true)); 

Notez que vous devez indiquer à la Binding d’effectuer la mise en forme en définissant le dernier paramètre ( enableFormatting ) sur true . Aucun autre code spécial n’est nécessaire pour traiter l’image.

Notez également que je n’ai pas essayé la mise en forme nécessaire pour utiliser des espaces et des apostrophes dans le nom de la colonne. Je recommande d’utiliser des noms standard!

Et enfin, assurez-vous de définir la propriété TableName de la Table vous souhaitez utiliser dans votre DataSet :

 data_set.Tables[0].TableName = "yourtablename"; 

Mise à jour à partir de votre discussion, il semble que vous n’ayez pas enregistré correctement les données d’image sur votre firebase database. Voici une version de votre routine qui devrait mieux fonctionner:

 byte[] img_byte = null; long imgfilelength = 0; private void StoreImage(ssortingng ChosenFile) { try { using (Image img = Image.FromFile(ChosenFile)) using (MemoryStream ms = new MemoryStream()) { img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); ms.Close(); img_byte = ms.ToArray(); imgfilelength = img_byte.Length; } } catch (Exception e) { MessageBox.Show(e.ToSsortingng()); } } 

Le test est aussi simple que cela:

 private void test_button_Click(object sender, EventArgs e) { StoreImage(someImageFile); using (MemoryStream ms = new MemoryStream(img_byte)) { aPictureBox.Image = Image.FromStream(ms); } } 

Assurez-vous d’utiliser le format de fichier correct, par exemple Png ou Jpeg etc.