Récupérer les préférences utilisateur sur une fenêtre MAIN en VB 2010 ???

Jokyone Messages postés 6 Date d'inscription mercredi 19 juillet 2006 Statut Membre Dernière intervention 10 décembre 2011 - 29 nov. 2011 à 22:53
NHenry Messages postés 15030 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 26 novembre 2022 - 29 nov. 2011 à 23:36

Récupérer les préférences utilisateur sur une fenêtre MAIN en VB 2010 ???

    Private Sub Frm_MAIN_Resize(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Resize
        ' Ces 2 variables Public enregistrent en permanence les dimensions de la fenêtre MAIN
        MyW = Me.Width
        MyH = Me.Height
    End Sub

    Private Sub Frm_MAIN_Move(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Move
        ' Ces 2 variables Public enregistrent en permanence les coordonnées (X/Y)  de la fenêtre MAIN
        MyLeft = Me.Location.X
        MyTop = Me.Location.Y
    End Sub
' (On peut remplacer la méthode Move par LocationChanged, çà revient au même)
        

A la fermeture de la Fenêtre, j’enregistre ses paramètres comme ceci :
    Private Sub Frm_MAIN_FormClosed(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.FormClosed
        '
        ' ************ Enregistrer les paramètres de la fenêtre MDI à la fermeture ************       
      
        'Dimensions de la fenêtre MAIN
        If Me.Width > 799 Then
            SaveSetting("Ressources", "Configuration", "LargeurW", MyW)
        End If
        '
        If Me.Height > 599 Then
            SaveSetting("Ressources", "Configuration", "HauteurW", MyH)
        End If

        ' Positions de la fenêtre MAIN  
        SaveSetting("Ressources", "Configuration", "PosX", MyLeft)
        SaveSetting("Ressources", "Configuration", "PosY", MyTop)
        '
        '
    End Sub




' En fin de Load de la fenêtre, j initialise un Timer à True pour redimensionner avec les valeurs de la Base de registre :
' (STARTAPP est une variable Public initialisée à True en Procédure FormLoad)

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        ' La  Frm_MAIN au se charge avec les valeurs (640 x 480)
        ' En fin de "Load" on redimensionne avec les dernières valeurs enregistrées dans la Base de Registre !
        If STARTAPP = True Then
            '
            Dim RegW As String = ""
            Dim RegH As String = ""
            Dim RegL As String = ""
            Dim RegT As String = ""
            '
            ' Position de la fenêtre MAIN
            RegL = GetSetting("Ressources", "Configuration", "PosX")
            If RegL <> "" Then
                MyLeft = Val(RegL)
            End If
            '
            RegT = GetSetting("Ressources", "Configuration", "PosY")
            If RegT <> "" Then
                MyTop = Val(RegT)
            End If
            '
            Me.Location = New System.Drawing.Point(MyLeft, MyTop)


            ' Taille de le fenêtre MAIN
            RegW = GetSetting("Ressources", "Configuration", "LargeurW")
            If RegW <> "" Then
                MyW = Val(RegW)
                Me.Width = MyW
            Else
                Me.Width = 800
            End If
            '
            RegH = GetSetting("Ressources", "Configuration", "HauteurW")
            If RegH <> "" Then
                MyH = Val(RegH)
                Me.Height = MyH
            Else
                Me.Height = 600
            End If
            '
            STARTAPP = False
        End If


    End Sub



Tout ceci fonctionne très bien !

Mais j ai un BIG Problème en VB 2010 (Que n’avais pas en VB6)

Je n arrive pas dans le code à définir la Propriété de la fenêtre WindowSate = Maximized
Ni à savoir la valeur de la propriété de ce statu (Normal / Maximized / Minimized) qui devrait me renvoyer une valeur numérique du statu, genre 0,1 et 2 Comme dans VB6…

A savoir qu il n’est pas bon de mémoriser la taille de la fenêtre, si l’utilisateur à cliquer sur le second bouton en haut à droite, derrière la croix rouge…
Sinon, lorsqu il cliquera sur ce même bouton pour réduire la fenêtre, il l aura dans le baba, puisque la taille mini de la fenêtre sera au MAX écran…
Le pire, c est qu avec Seven on peut passer en Maximized juste en déplaçant la fenêtre juste avec la souris…

Quelqu’un a une réponse ???

Merci d’avance.


Joky

1 réponse

NHenry Messages postés 15030 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 26 novembre 2022 157
29 nov. 2011 à 23:36
Bonjour,

En .NET, préfères utiliser My.Settings plutôt, ce sera plus facile à manipuler.

Penses aussi à tretirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet "Références" des propriétés du projet.
Ensuite, utilises des méthode s.NET pour convertir les valeur si besoin :
Val se remplace par Integer.Parse ou Double.Parse, ...
Il y a aussi TryParse.

Si ce n'est pas fait, actives Option Strict.

Une fois cela fait, reviens avec les erreurs que tu n'arrives pas à corriger.

Il est d'usage d'éviter d'utiliser ces méthodes compatibles VB6, car elle ne sont que le miroir d'autres qui sont plus conforme .NET, plus facile à comprendre et surtout, plus facilement gérables (format numérique incorrecte par exemple ...).

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, ce lien ou encore celui-ci[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
0