Problème premier affichage d'un Formulaire de données VB2010

Résolu
Phil2Lil Messages postés 30 Date d'inscription vendredi 14 juillet 2006 Statut Membre Dernière intervention 8 décembre 2011 - 5 déc. 2011 à 15:51
Phil2Lil Messages postés 30 Date d'inscription vendredi 14 juillet 2006 Statut Membre Dernière intervention 8 décembre 2011 - 8 déc. 2011 à 07:49
Bonjour,

Etat des lieux :
Un formulaire de données est lié à un BindingSource
Dans Form_Load() je charge les tables par la fonction Fill
Je dois afficher une image qui dépend de L'ID en cours
Dans BindingSource_CurrentChanged() :
        Dim Chemin_Fichier As String = My.Settings.Dossier_Affiches & "" & Num_FilmLabel.Text & ".jpg"
        If System.IO.File.Exists(Chemin_Fichier) = True Then
            AffichePictureBox.Image = Image.FromFile(Chemin_Fichier)
        Else
            AffichePictureBox.Image = Nothing
        End If


Au démarrage, l'image du 1er enregistrement ne s'affiche pas.
Doit-on passer par un autre évènement que CurrentChanged ?
Ou peut-être appeler CurrentChanged dans le Form_Load ?

Merci pour votre éclairage.

1 réponse

Phil2Lil Messages postés 30 Date d'inscription vendredi 14 juillet 2006 Statut Membre Dernière intervention 8 décembre 2011
8 déc. 2011 à 07:49
Bonjour,

J'ai finalement trouvé d'où venait mon erreur. Pour ceux qui auraient le même problème voici la solution :

Les instructions dans l'événement BindingSource_CurrentChanged() sont bien placées. Le seul défaut est que le premier enregistrement affiché n'est pas considéré comme étant un changement d'enregistrement puisqu'il n'y en avait pas d'autre affiché avant celui-ci. Il existe un événement dans la classe Form qui est approprié à ce que je dois obtenir, c'est l'événement Shown. L'événement Shown est déclenché uniquement la première fois qu'un formulaire est affiché. J'ai déplacé le code de l'événement CurrentChanged dans une nouvelle procédure, et j'appelle cette procédure à la fois dans l'événement Shown et dans l'événement CurrentChanged.
Ce qui donne le code suivant :
    Private Sub FilmsBindingSource_CurrentChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles FilmsBindingSource.CurrentChanged
        ' L'évènement se produit quand on change d'enregistrement
        Eléments_Fiche()
    End Sub

    Private Sub Eléments_Fiche()
        ' Modifie certains éléments de la fiche

        If Num_AllocinéTextBox.Text = "" Then
            Bouton_Fiche_Allociné.Enabled = False
        Else
            Bouton_Fiche_Allociné.Enabled = True
        End If

        Dim Chemin_Fichier As String = My.Settings.Dossier_Affiches & "" & Num_FilmLabel.Text & ".jpg"
        If System.IO.File.Exists(Chemin_Fichier) = True Then
            AffichePictureBox.Image = Image.FromFile(Chemin_Fichier)
        Else
            AffichePictureBox.Image = Nothing
        End If

    End Sub

    Private Sub Form1_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown
        ' L'événement Shown est déclenché uniquement la première fois qu'un formulaire est affiché 
        Eléments_Fiche()
    End Sub
3
Rejoignez-nous