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 :

Problème lors d'appel de fonction dans page de démarrage. [Débutant]


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2014
    Messages : 75
    Points : 17
    Points
    17
    Par défaut Problème lors d'appel de fonction dans page de démarrage.
    Bonjour à tous.
    Je bidouille un logiciel qui manipule des fichiers XML.
    Mon problème est le suivant :
    J'ai fais une page de démarrage en fondu, dans laquelle s'initialise toutes les données de mon logiciel (lecture des fichiers XML pour les paramètres données de comptes utilisateurs etc.)
    dans ma page de démarrage j'ai donc ce code :
    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
    34
    35
    36
    37
    Public Class Demarrage
        Dim Paramètres As Propriétés = LitDataXMLPropriétés("Propriétées.xml") 'Créé une classe "Paramètres" Propriétés qui contient les données du fichier "Propriétées.xml"'
     
    Public Function LitDataXMLPropriétés(ByVal filename As String) As Propriétés 'Créé la fonction lecture du fichier xml'
            Try 'Essaye le code suivant : '
                Using objStreamReader As New StreamReader(filename) 'Utilise le flux de données du fichier "filename"'
                    Try 'Essaye le code suivant : '
                        Return DirectCast((New XmlSerializer(GetType(Propriétés))).Deserialize(objStreamReader), Propriétés) 'Sérialise le fichier xml'
                    Catch ex As Exception 'Si l'essais échoue'
                        MessageBox.Show("Echec de la lecture." & ex.Message) 'Affiche un message d'erreur'
                    End Try 'Fin de l'essais du code'
                End Using 'Coupe toutes ressources utilisées pour créer le flux.'
            Catch ex As Exception 'Si le fichier n'existe pas'
                Paramètres = New Propriétés 'Créé un nouveau fichier "Propriétés"'
                EcritDataXMLPropriétés("Propriétées.xml", Paramètres) 'L'écrit'
                System.Windows.Forms.Application.Restart() 'Redémarre l'application'
                End 'Ferme l'application en cours'
            End Try 'Fin de l'essais du code'
            Return Nothing
        End Function
     
        Public Sub EcritDataXMLPropriétés(ByVal filename As String, paramètres As Propriétés)
            Try
                Using objStreamWriter As StreamWriter = New StreamWriter(filename)
                    Try
                        Dim xsPropriety As New XmlSerializer(GetType(Propriétés), New XmlRootAttribute("Propriétés"))
                        xsPropriety.Serialize(objStreamWriter, paramètres)
                    Catch ex As Exception
                        MessageBox.Show("Echec de l'écriture." & ex.Message)
                    End Try
                End Using
            Catch ex As Exception
                MessageBox.Show("Fichier inaccessible." & ex.Message)
            End Try
        End Sub
    ...
    End sub
    Ceci est un fragment du code complet.

    Dans ma feuille de paramètres j'ai ceci :
    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
    Private Sub Boutton_Valider_Click(sender As Object, e As EventArgs) Handles Boutton_Valider.Click
     
            If Check_Autor_Modif_MDP.Checked = True Then
                Demarrage.Paramètres.Act_MDP.Autor_MDP = True
            Else
                Demarrage.Paramètres.Act_MDP.Autor_MDP = False
            End If
            Demarrage.EcritDataXMLPropriétés("Propriétées.xml", Paramètres)
            Me.Close()
     
        End Sub
     
        Private Sub Param_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            If Demarrage.Paramètres.Act_MDP.Autor_MDP = True Then
                Check_Autor_Modif_MDP.Checked = True
            Else
                Check_Autor_Modif_MDP.Checked = False
            End If
        End Sub
    Mon problème est que lors de l'appel à mes fonctions dans ma page de demarrage, le logiciel lance une seconde fois l'application. Une idée quelqu'un svp ?
    Autre chose, j'ai conté ce phénomène en tapant le code dans toutes mes pages mais c'est un peut lourd à la fin... J'ai aussi essayé de taper une seule fois ce code dans une "page de code" sous visual studio 2013 mais je n'arrives pas à récupérer les données de dans cette feuille. Voila merci par avance de votre aide et vos lumières !

  2. #2
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    bonsoir ,

    Ton application se lance une seconde fois car tu as mis ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.Windows.Forms.Application.Restart()
    Cette méthode est lancée car tu as certainement une erreur dans ton 1er bloc Try....Catch !! Ce n'est pas très logique de relancer ton programme à la suite d'une erreur......

    Je rajouterai egalement que ceci n'a absolument aucun effet (ce qui suit le code supra):

    Si tu veux gérer une exception concernant la non existence d'un fichier il faut utiliser ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Try
    Catch ex as system.io.filenotfoundexception
    'fichier non trouvé !
    'placer ici le code de gestion
    '........
    '...........
    end try

    @+

  3. #3
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2014
    Messages : 75
    Points : 17
    Points
    17
    Par défaut
    Tout d'abord merci de votre réponse. J'ai mis un redémarrage d'application car lorsque j'appellerais la fonction de lecture du fichier xml, ça ne marchait pas...
    Le end est la Car il me Ferme le programme en cours et en démarre un autre. Sans lui, mon application des le début démarre 2 fois donc si il est nécessaire.
    De plus, comme mon application démarre bien une première fois et me lis le fichier une fois avoir redémarrer si il n'existe pas, il n'y a aucune raison qu'il me donne une erreur si je l'appele après qu'elle a réussi à la réaliser (je me trompe ?)

  4. #4
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2013
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 235
    Points : 359
    Points
    359
    Par défaut
    Bonjour,
    Je ne voulais pas prendre part à ta 'bidouille'...
    Mais j'ai rapidement lu ça:
    Le end est la Car il me Ferme le programme en cours et en démarre un autre.
    MSDN:
    Vous pouvez placer l'instruction END ne importe où dans une procédure pour forcer l'application entière de cesser sa progression. END ferme tous les fichiers ouverts avec une instruction Open et efface toutes les variables de l'application. L'application se ferme dès que il n'y a pas d'autres programmes possédant une référence à ses objets et aucun de son code est en cours d'exécution .

    Je ne vois pas où il démarre un autre 'programme'...
    Par nature les mots, ils sont flous, c'est une fois alignés qu'ils se précisent.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2014
    Messages : 75
    Points : 17
    Points
    17
    Par défaut
    Non pardon je me suis mal exprimé: la ligne qui précède le end me redémarre le logiciel mais ne me Ferme pas celui en cours. En fait il me le reouvre. Donc le end est la pour fermer celui qui es en cours d'exécution. J'espère que c'est plus clair ^^ désolé de la confusion.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2014
    Messages : 75
    Points : 17
    Points
    17
    Par défaut
    En fait, pour développer un peut plus mon problème, j'avais fait ceci :
    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
    Public Function LitDataXMLPropriétés(ByVal filename As String) As Propriétés 'Créé la fonction lecture du fichier xml'
            Try 'Essaye le code suivant : '
                Using objStreamReader As New StreamReader(filename) 'Utilise le flux de données du fichier "filename"'
                    Try 'Essaye le code suivant : '
                        Return DirectCast((New XmlSerializer(GetType(Propriétés))).Deserialize(objStreamReader), Propriétés) 'Sérialise le fichier xml'
                    Catch ex As Exception 'Si l'essais échoue'
                        MessageBox.Show("Echec de la lecture." & ex.Message) 'Affiche un message d'erreur'
                    End Try 'Fin de l'essais du code'
                End Using 'Coupe toutes ressources utilisées pour créer le flux.'
            Catch ex As Exception 'Si le fichier n'existe pas'
                Paramètres = New Propriétés 'Créé un nouveau fichier "Propriétés"'
                EcritDataXMLPropriétés("Propriétées.xml", Paramètres) 'L'écrit'
                Paramètres = LitDataXMLPropriétés("Propriétées.xml") 
            End Try 'Fin de l'essais du code'
            Return Nothing
        End Function
    Mais ma liste de paramètres restait vide.
    J'ai donc aujourd'hui essayé avec la méthode plus approprié que vous m'avez transmise en remplaçant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Catch ex As Exception 'Si le fichier n'existe pas'
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Catch ex As filenotfoundexception 'Si le fichier n'existe pas'
    Mais le résultat reste le même.
    Voila pourquoi je le fais redémarrer : pour qu'au redémarrage, il exécute cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Public Class Demarrage
        Dim Paramètres As Propriétés = LitDataXMLPropriétés("Propriétées.xml") 'Créé une classe "Paramètres" Propriétés qui contient les données du fichier "Propriétées.xml"'
    sans trouver d'erreur vu que le fichier est créé l'instant précédent, donc pas de filenotfound et du coup ma liste de paramètres est bien remplie. Le End suivant sert à fermer la première exécution du programme qui ne trouvait pas ledit fichier. Voila voila !

  7. #7
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2013
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 235
    Points : 359
    Points
    359
    Par défaut
    Re:
    Tous tes 'try catch' me semblent bien nombreux, c'est normal que tu n'arrives pas à voir une quelconque erreur.
    Il me semble aussi que ce que tu attends ce serait un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    If System.IO.File.Exists(filename) Then 
            Using objStreamReader As New StreamReader(filename) 'Utilise le flux de données du fichier "filename"'
    Return DirectCast((New XmlSerializer(GetType(Propriétés))).Deserialize(objStreamReader), Propriétés) 'Sérialise le fichier xml'
    end using
    else
    MessageBox.Show("Où est ce fichier ???")
    'Bla bla bla etc.
    end if
    Par nature les mots, ils sont flous, c'est une fois alignés qu'ils se précisent.

  8. #8
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2014
    Messages : 75
    Points : 17
    Points
    17
    Par défaut
    Ah les try catch il faut les éviter au maximum ? Où alors plus tôt mieux gérer les erreurs et pas faire simplement comme j'ai fait c'est ça ?

  9. #9
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2013
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 235
    Points : 359
    Points
    359
    Par défaut
    les try catch il faut les éviter au maximum
    Je n'ai pas dit ça, mais dans ton cas précis ce que tu veux savoir c'est s'il a bien lu le fichier non?
    Donc le 'file.exists' va t'indiquer déjà si le fichier est présent, en suite pour sa lecture ça ne devrait pas poser de problème.

    Alors si tu utilises les try catch il faudrait lire les exceptions pour mieux comprendre l'erreur, du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     Try
                'bla bla
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
    Par nature les mots, ils sont flous, c'est une fois alignés qu'ils se précisent.

  10. #10
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2014
    Messages : 75
    Points : 17
    Points
    17
    Par défaut
    Ah oui d'accord. En fait mon code serait bon c'est juste que j'ai une erreur quand j'appelle la fonction dans ma form "demarrage" (obligatoirement sinon mon programme ne se mettrait pas à redémarrer) mais comme je n'ai pas fait d'analyse de cette erreur on ne peut rien faire. C'est bien cela ?

  11. #11
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2013
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 235
    Points : 359
    Points
    359
    Par défaut
    Bon, c'est bien confus tout ça...
    Oui, le ex.message t'indiquera quelle est l'erreur

    Que veux-tu faire?
    Tu veux lire une fichier XML et en suite analyser son contenu non?
    Je ne vois pas ce que fait la le 'End', et/ou le redémarrage

    Pour lire le fichier tout simplement comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim Fichier As String = "c:\blabla\fich.xml"
            Dim Contenu As String
            If System.IO.File.Exists(Fichier) Then
                Contenu = System.IO.File.ReadAllText(Fichier)
                'Contenu contient le contenu du fichier :)
            Else
                MsgBox("Fichier introuvable")
            End If
    Par nature les mots, ils sont flous, c'est une fois alignés qu'ils se précisent.

  12. #12
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2014
    Messages : 75
    Points : 17
    Points
    17
    Par défaut
    En fait ce que je fais c'est que je le lis le fichier oui. Et si il n'existe pas je le créé ET j'aimerais après l'avoir créé le lire du coups. Or, comme je l'ai dis dans un post précédent, j'avais fais ce code ci :
    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
    Public Function LitDataXMLPropriétés(ByVal filename As String) As Propriétés 'Créé la fonction lecture du fichier xml'
            Try 'Essaye le code suivant : '
                Using objStreamReader As New StreamReader(filename) 'Utilise le flux de données du fichier "filename"'
                    Try 'Essaye le code suivant : '
                        Return DirectCast((New XmlSerializer(GetType(Propriétés))).Deserialize(objStreamReader), Propriétés) 'Sérialise le fichier xml'
                    Catch ex As Exception 'Si l'essais échoue'
                        MessageBox.Show("Echec de la lecture." & ex.Message) 'Affiche un message d'erreur'
                    End Try 'Fin de l'essais du code'
                End Using 'Coupe toutes ressources utilisées pour créer le flux.'
            Catch ex As Exception 'Si le fichier n'existe pas'
                Paramètres = New Propriétés 'Créé un nouveau fichier "Propriétés"'
                EcritDataXMLPropriétés("Propriétées.xml", Paramètres) 'L'écrit'
                Paramètres = LitDataXMLPropriétés("Propriétées.xml") 
            End Try 'Fin de l'essais du code'
            Return Nothing
        End Function
    qui me créé bien mon fichier Mais après l'avoir créé, (donc la ligne " EcritDataXMLPropriétés("Propriétées.xml", Paramètres) 'L'écrit'" ma ligne "Paramètres = LitDataXMLPropriétés("Propriétées.xml") " ne me rentre pas mon fichier dans mon objet "Paramètres".

    C'est pour ça que j'ai contourné ce problème en redémarrant mon programme (vu que le fichier ce créé correctement), de ce fait au debut de mon programme la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Dim Paramètres As Propriétés = LitDataXMLPropriétés("Propriétées.xml") 'Créé une classe "Paramètres" Propriétés qui contient les données du fichier "Propriétées.xml"'
    me renvoie à ma fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Public Function LitDataXMLPropriétés(ByVal filename As String) As Propriétés 'Créé la fonction lecture du fichier xml'
            Try 'Essaye le code suivant : '
                Using objStreamReader As New StreamReader(filename) 'Utilise le flux de données du fichier "filename"'
                    Try 'Essaye le code suivant : '
                        Return DirectCast((New XmlSerializer(GetType(Propriétés))).Deserialize(objStreamReader), Propriétés) 'Sérialise le fichier xml'
                    Catch ex As Exception 'Si l'essais échoue'... etc
    Et comme le fichier est créé il me le lit et me remplis mon objet Paramètres.
    Le END est là pour fermer le logiciel ouvert (celui qui m'a créé le fichier XML) car le restart m'en démarre un autre (celui qui lit le fichier donc) !
    J'ai pas trouvé de meilleure méthode ça fonctionne mais je me doutes bien que c'est pas la solution ! Voila pourquoi je vous en parles aussi

  13. #13
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Bonjour,
    Citation Envoyé par Vidou12 Voir le message
    Bonjour à tous.
    Je bidouille un logiciel qui manipule des fichiers XML.
    Mon problème est le suivant :
    J'ai fais une page de démarrage en fondu, dans laquelle s'initialise toutes les données de mon logiciel (lecture des fichiers XML pour les paramètres données de comptes utilisateurs etc.)
    dans ma page de démarrage j'ai donc ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Public Class Demarrage
        Dim Paramètres As Propriétés = LitDataXMLPropriétés("Propriétées.xml") 'Créé une classe "Paramètres" Propriétés qui contient les données du fichier "Propriétées.xml"'
    En fait c'est dans ta classe demarrage qu'il faut prévoir le déroulement des opérations
    Il ne faut donc pas déclarer et instancier la classe en faisant la lecture du fichier dans les propriétés sinon c'est compliqué de gérer l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Public Class Demarrage
        Dim Paramètres As Propriétés 
     
        Sub New(ByVal filename As String)
            If System.IO.File.Exists(filename) Then 
    ' existe : lit le fichier avec la méthode qui renvoie une instance
                Paramètres = LitDataXMLPropriétés("Propriétées.xml") 'Créé une instance "Paramètres" Propriétés qui contient les données du fichier "Propriétées.xml"'
            else
    ' n'existe pas : cré l'instance et le fichier
                Paramètres = New Propriétés 'Créé un une instance "Propriétés"'
                EcritDataXMLPropriétés("Propriétées.xml", Paramètres) 'L'écrit' dans un fichier
            end if
        End Sub
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  14. #14
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2014
    Messages : 75
    Points : 17
    Points
    17
    Par défaut
    Ok mais comment je place mon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sub New(ByVal filename As String)
    ??
    Car il me dis qu'il faut appeler la méthode InitializeComponent.
    En cherchant sur le web j'ai vu que c’était le code qui ce lance au démarrage du programme si j'ai bien compris ? Il me faut le mettre dedans ? Si oui on le trouve ou ??

  15. #15
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Je n'avais pas fait attention que demarrage était ton "form" de départ

    Tu mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
            If System.IO.File.Exists(filename) Then 
    ' existe : lit le fichier avec la méthode qui renvoie une instance
                Paramètres = LitDataXMLPropriétés("Propriétées.xml") 'Créé une instance "Paramètres" Propriétés qui contient les données du fichier "Propriétées.xml"'
            else
    ' n'existe pas : cré l'instance et le fichier
                Paramètres = New Propriétés 'Créé un une instance "Propriétés"'
                EcritDataXMLPropriétés("Propriétées.xml", Paramètres) 'L'écrit' dans un fichier
            end if
    dans l'évènement load
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  16. #16
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2014
    Messages : 75
    Points : 17
    Points
    17
    Par défaut
    Ok merci beaucoup. Pour le moment ça marche. Ce soir j'essaye de voir si en appelant d'une autre form les fonctions de ma première form ça refait pareil ou pas. Merci !

  17. #17
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2014
    Messages : 75
    Points : 17
    Points
    17
    Par défaut
    Bon ben mauvaise nouvelle : le résultat est le même : quand je suis sur ma form paramètres, que j'appelle la fonction, dans ma form demarrage pour écrire dans le fichier : paramètre.xml, mon logiciel se relance comme si on l'ouvrait une seconde fois.
    Pourtant aucun restart reset ou quoi dans mon code... Je ne comprends vraiment pas...

  18. #18
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Dans demarrage ton code doit ressembler à ceci
    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
    Public Class Demarrage
        Public Property Paramètres As Propriétés
     
        Private Sub Demarrage_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
            LitParametres("Propriétées.xml")
        End Sub
     
        Public Sub LitParametres(ByVal FileName As String)
            If System.IO.File.Exists(FileName) Then
                ' existe : lit le fichier avec la méthode qui renvoie une instance
                Paramètres = LitDataXMLPropriétés(FileName) 'Créé une instance "Paramètres" Propriétés qui contient les données du fichier "Propriétées.xml"'
            Else
                ' n'existe pas : cré l'instance et le fichier
                Paramètres = New Propriétés 'Créé un une instance "Propriétés"'
                EcritDataXMLPropriétés(FileName, Paramètres) 'L'écrit' dans un fichier
            End If
        End Sub
    Puisque tu as la propriéte, il suffit de faire référence à celle-ci dans les autres fenêtres, si tu penses que des modif ont été faites au fichier hors de la propriété (ne semble pas logique dans le cadre de ton appli), tu appeles la méthode LitParametres
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  19. #19
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2014
    Messages : 75
    Points : 17
    Points
    17
    Par défaut
    aaaah oui en fait moi j'appelais paramètres !!! C'est pour ça que ça me redemarre tout à chaque fois ?

  20. #20
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2014
    Messages : 75
    Points : 17
    Points
    17
    Par défaut
    non le problème reste le même en fait.
    Je vais expliquer différemment et plus complet.
    En mode pas à pas je me suis rendu compte d'une chose.
    J'ai ma fenêtre de démarrage où il y a un timer que j'ai ajouter pour faire un effet visuel de fondu (opacity +=0.02 si opacity = 1 alors opacity -=0.02) facile.
    Dans mon autre fenêtre qui gère les paramètres donc, j’appelle la fonction EcritDataXMLPropriétés de ma page de démarrage.
    La fonction ce déroule très bien Mais à la fin de cette fonction, ma page de paramètres ce ferme très bien ! Et mon timer ce met en route avec tout mon code (opacity)
    Bref voici le code qui ce lance au démarrage de mon logiciel :
    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
    Public Class Demarrage
        Public Paramètres As Propriétés 'Créé une classe "Paramètres" Propriétés qui contient les données du fichier "Propriétées.xml"'
        Dim fin As Boolean = False 'Créé un booléen "fin"'
     
        Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Tempo.Tick
     
            If fin = True Then 'Regarde si la condition fin est vraie si c'est le cas alors'
                Tempo.Interval = 25 'Marque une pause toutes les 25 ms'
                If Me.Opacity = 0 Then 'Si l'opacité est égale à 0 alors la page d'accueil s'affiche'
                    Pagedaccueil.Show()
                    Pagedaccueil.BackColor = Color.FromArgb(Paramètres.Valeurs_RVB.Rouge, Paramètres.Valeurs_RVB.Vert, Paramètres.Valeurs_RVB.Bleu)
                    Pagegestiondescomptes.BackColor = Color.FromArgb(Paramètres.Valeurs_RVB.Rouge, Paramètres.Valeurs_RVB.Vert, Paramètres.Valeurs_RVB.Bleu)
                    pageadmin.BackColor = Color.FromArgb(Paramètres.Valeurs_RVB.Rouge, Paramètres.Valeurs_RVB.Vert, Paramètres.Valeurs_RVB.Bleu)
                    Nouvel_élève.BackColor = Color.FromArgb(Paramètres.Valeurs_RVB.Rouge, Paramètres.Valeurs_RVB.Vert, Paramètres.Valeurs_RVB.Bleu)
                    Param.BackColor = Color.FromArgb(Paramètres.Valeurs_RVB.Rouge, Paramètres.Valeurs_RVB.Vert, Paramètres.Valeurs_RVB.Bleu)
                    résultatsélèves.BackColor = Color.FromArgb(Paramètres.Valeurs_RVB.Rouge, Paramètres.Valeurs_RVB.Vert, Paramètres.Valeurs_RVB.Bleu)
                    Selection_exercice.BackColor = Color.FromArgb(Paramètres.Valeurs_RVB.Rouge, Paramètres.Valeurs_RVB.Vert, Paramètres.Valeurs_RVB.Bleu)
                    Tempo.Stop() 'Fin du timer'
                    Me.Close() 'Fermeture de la page de démarrage'
                Else 'Sinon si l'opacité de la page de démarrage est égale à 1 ou est différente de 1 alors'
                    Me.Opacity = Me.Opacity - 0.02 'L'opacité de la page de démarrage diminue de 2% toutes les 25 ms'
                End If
     
            ElseIf fin = False Then 'Regarde si la condition fin est fausse si c'est le cas alors'
                If Me.Opacity <> 1 Then 'Si opacité différente de 1'
                    Me.Opacity = Me.Opacity + 0.02 'Opacité de la page de démarrage augmente de 2% toutes les 25 ms'
                Else 'Sinon si opacité égale à 1 alors'
                    Tempo.Interval = 2500 'Pause de 2.5s'
                    fin = True 'Fin de l'affichage de la page de démarrage'
                End If
            End If
     
        End Sub
    et c'est celui ci qui, a la fin de ce code ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Public Sub EcritDataXMLPropriétés(ByVal filename As String, paramètres As Propriétés)
            Try
                Using objStreamWriter As StreamWriter = New StreamWriter(filename)
                    Try
                        Dim xsPropriety As New XmlSerializer(GetType(Propriétés), New XmlRootAttribute("Propriétés"))
                        xsPropriety.Serialize(objStreamWriter, paramètres)
                    Catch ex As Exception
                        MessageBox.Show("Echec de l'écriture." & ex.Message)
                    End Try
                End Using
            Catch ex As Exception
                MessageBox.Show("Fichier inaccessible." & ex.Message)
            End Try
        End Sub
    (qui se déroule sans accrocs) suite à cet appel là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Boutton_Valider_Click(sender As Object, e As EventArgs) Handles Boutton_Valider.Click
     
            If Check_Autor_Modif_MDP.Checked = True Then
                Paramètres.Act_MDP.Autor_MDP = True
            Else
                Paramètres.Act_MDP.Autor_MDP = False
            End If
            Demarrage.EcritDataXMLPropriétés("Propriétées.xml", Paramètres)
            Me.Close()
     
        End Sub
    après CE END Sub, me repars dans le Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Tempo.Tick !

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. [MySQL] Appel de fonction dans la même page
    Par guillaumeIOB dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 08/01/2007, 01h31
  2. Réponses: 10
    Dernier message: 08/12/2006, 03h18
  3. Appel de fonction dans une page JSP
    Par Addouna dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 09/03/2006, 13h56
  4. Réponses: 6
    Dernier message: 20/01/2006, 20h28
  5. Réponses: 7
    Dernier message: 10/09/2005, 17h49

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