IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

[vb.net][databindings]image


Sujet :

VB.NET

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 745
    Par défaut [vb.net][databindings]image
    Bonjour, ou plutot re....
    Voila j'ai fai le lien entre un datagrid et un usercontrol grace au databindings tout ce passe bien tant qu'il s'agit de text :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Public ReadOnly Property textnom() As Janus.Windows.GridEX.EditControls.EditBox
            Get
                Return Me.txtNom
            End Get
        End Property
    puis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UC.textnom.DataBindings.Add("Text", DataSet21, "employe.emp_nom")
    mais c'est lorsque que je veux afficher une image que tout se complique:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     Public ReadOnly Property photo() As PictureBox
            Get
                Return Me.PictureBox1
            End Get
        End Property
    puis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UC.photo.DataBindings.Add("text", DataSet21, "employe.emp_photo")

    lorsque je met text il ne plante pas mais ne m'affiche rien normal, ma question est de savoir quoi mettre a la place(pas image, backgroundimagenon plus...)
    MERCI d'avance....

  2. #2
    Expert confirmé
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Par défaut
    et pourquoi pas Image :

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 745
    Par défaut Re: [vb.net][databindings]image
    Citation Envoyé par Alex35
    lorsque je met text il ne plante pas mais ne m'affiche rien normal, ma question est de savoir quoi mettre a la place(pas image, backgroundimagenon plus...)
    MERCI d'avance....
    bah non j'ai essayé mais sans résultat ca plante, il me dit que image est un type et ne peut etre utilisé comme ca

  4. #4
    Expert confirmé
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Par défaut
    je suis sûr que c'est ton code pour Image qui ne va pas plutôt
    donc
    1. quel est le type de "employe.emp_photo" côté BDD :
    2. montres moi comment tu as essayé avec PictureBox.Image :

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 745
    Par défaut
    coté bdd le type de emp_photo est bytea et dans mon dataset c'est base64Binary

    et sinon avec picturebox.image j'ai fai:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .photo.DataBindings.Add("picturebox.image", DataSet21, "employe.emp_photo")
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .photo.DataBindings.Add("image", DataSet21, "employe.emp_photo")
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .photo.DataBindings.Add("backgroundimage", DataSet21, "employe.emp_photo")
    mais non rien

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 745
    Par défaut
    bah en fait avec image ou backgroundimage il me donne l'erreur suivante :
    Une exception non gérée du type 'System.FormatException' s'est produite dans system.windows.forms.dll

    Informations supplémentaires : Impossible de mettre en forme la valeur avec le type souhaité.

  7. #7
    Expert confirmé
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Par défaut
    ok
    c'est tout simplement un problème de typage des données acr la propriété Image atteind un type Image et non un tableau de Byte.
    Donc 2 possiblités
    • 1. tu modifies côté BDD en ayant directement des objets OLE Image stockés
      2. tu abandonnes le DataBindings direct pour la photo qui nécessite d'abord un traitement pour opter sur un binding en 2 temps:

      [list:7e46b18a89]a. Developpe ta propre classe BindingPictureBox qui dérive de PictureBox et qui ajoute simplement 2 choses:
      [list:7e46b18a89]* un evenement TagChanged (donc en créant un TagChangedEventHandler, et un TagChangedEventArgs)
      * une méthode OnTagChanged qui récupère la valeur du Tag et le convertit en Image et modifie la propriété Image avec le resultat

    b. Attribue maintenant le Binding à la propriété Tag[/list:u:7e46b18a89][/list:u:7e46b18a89]

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 745
    Par défaut
    ouh la la la la la je nage completement....
    bon vais essayer de voir tout ca mais si tu pouvais me la refaire en francais...

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 745
    Par défaut
    pour l'instant j'ai ca....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Public Class BindingPictureBox
        Inherits System.Windows.Forms.PictureBox
        Dim TagChangedEventHandler As System.EventHandler
        Dim TagChangedEventArgs As System.EventArgs
     
        Sub OnTagChanged()
     
        End Sub
    mais suis un peu paumé de si bon matin...

  10. #10
    Expert confirmé
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Par défaut
    Citation Envoyé par Alex35
    ouh la la la la la je nage completement....
    bon vais essayer de voir tout ca mais si tu pouvais me la refaire en francais...
    Au moins tu as compris quand même que ton DataBindings sera sur la propriété Tag du PictureBox, çà je suppose que maintenant t'as compris comment on fait
    Donc maintenant que le tableau de Byte est stocké dans Tag comment faire pour que le PictureBox comprenne de lui même que
    1. sa valeur Tag vient de changer
    2. qu'il doit transformer ce tableau de byte en Image
    3. qu'il doit attribuer cette Image à sa propriété Image
    Je viens bien de decrire la création d'un PictureBox qui en fait un peu plus qu'un PictureBox habituel non
    Donc (je vais faire basique)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    Option Explicit On
    Option Strict On
     
    Imports System
    Imports Systeme.ComponentModel
    Imports System.Drawing
    Imports System.IO
    Imports System.Windows.Forms
    '...
    Public Class BindingPictureBox
     Inherits PictureBox
     
     'Modifier la propriété Tag
     Public Overrides Property Tag() As Object
        Get
           Return Mybase.Tag
        End Get
        Set (ByVal Value As Object)
           Mybase.Tag = Value
           Me.OnTagChanged()
        End Set
     End Property
     
     'Convertir la valeur Tag en Image et modifier la propriété Image
     Private Sub OnTagChanged()
        Dim b() As Byte = Ctype(Me.Tag, Byte())
        Dim ms As New MemoryStream(b)
        Dim img As Image = Image.FromStream(ms)
        Me.Image = img
        Me.Invalidate
     End Sub 
    End Class
    Voilà il ne reste qu'à changer le pictureBox de ton UserControl en type BindingPictureBox
    Celà devrait fonctionner maintenant avec le bon DataBindings
    Malheureusement je ne suis pas en mesure de tester moi même ton cas de figure donc je vais te demander de mobiliser ta propre capacité de resolution de problème allez du nerf
    Laisse tomber l'evnement pour l'instant, c'est au cas au tu souhaiterais le capturer dans ton appli pour un autre traitement

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 745
    Par défaut
    oki....
    mais juste une derniere chose :
    pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Overrides Property [u]Tag() [/u]As Object
    il me dit :

    'tag' se subsititue a property dans class 'control' de base qui n'est pas déclaré comme 'overribale'
    ce qui signifie???

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 745
    Par défaut
    je sais pas si c'est bon mais en mettant shadows a la place il me supprime l'erreur....
    Sinon
    il me reste pas mal d'erreur a resoudre...
    1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Friend WithEvents PictureBox1 As BindingPictureBox
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.PictureBox1 = New BindingPictureBox
    mais a la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.gpbInfoPerso.Controls.Add(Me.PictureBox1)
    il me dit
    C:\Documents and Settings\Administrateur\Bureau\OntimeV5\Ontime\Ontime\EmployCtrl.vb(124): La variable 'PictureBox1' n'est pas déclarée ou n'a jamais été assignée.
    2)de plus il me dit:
    Impossible de trouver le type 'Ontime.EmployCtrl+BindingPictureBox'. Assurez-vous que l'assembly qui contient ce type est référencé. Si ce type fait partie de votre projet de développement, assurez-vous que le projet a été généré correctement.

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 745
    Par défaut
    Citation Envoyé par neguib
    Au moins tu as compris quand même que ton DataBindings sera sur la propriété Tag du PictureBox, çà je suppose que maintenant t'as compris comment on fait
    mais pour cela il faudrait que je vois ma pictire box mais en fait elle a disparu de mon control utilisateur...
    pourtant elle est bien la quand je charge une photo mais je ne peux acceder a ses proprietes en mode design...

  14. #14
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 745
    Par défaut
    sinon je suppose que ce n'est pas comme ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .photo.Tag.DataBindings.Add("image", DataSet21, "employe.emp_photo")
    car il me dit
    Une exception non gérée du type 'System.NullReferenceException' s'est produite dans microsoft.visualbasic.dll

    Informations supplémentaires : Variable objet ou variable d'un bloc With non définie.

  15. #15
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 745
    Par défaut
    c'est bon j'ai plus d'erreur et au risque de foretment te decevoir neguib, mais je prend le risque quand meme...
    comment on fait???

    Au moins tu as compris quand même que ton DataBindings sera sur la propriété Tag du PictureBox, çà je suppose que maintenant t'as compris comment on fait

  16. #16
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 745
    Par défaut
    ca va je sais je suis tres impatient et je ne reflechis pas trop avant de poster mes sujets et surtout mes reponses....
    la reponse est donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .photo.DataBindings.Add("tag", DataSet21, "employe.emp_photo")
    Encore une fois MERCI MERCI MERCI MERCI MERCI ton aide m'aété tres tres precieuse neguib
    Bonne continuation!!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB.net] Embedded image ressource
    Par WriteLN dans le forum Windows Forms
    Réponses: 3
    Dernier message: 11/10/2005, 14h20
  2. [VB.NET]Champ image dans base de donnée access
    Par dankes dans le forum Windows Forms
    Réponses: 10
    Dernier message: 06/10/2005, 15h31
  3. [VB.NET]Champ image
    Par dankes dans le forum Access
    Réponses: 3
    Dernier message: 06/10/2005, 15h26
  4. [VB.NET][ADO.NET] DataBindings et Relations
    Par DotNET74 dans le forum Accès aux données
    Réponses: 4
    Dernier message: 21/07/2005, 15h58
  5. [VB.NET][DataBinding] Rafraichissement DataGrid lié à un obj
    Par speedy1496 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 21/10/2004, 10h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo