Connaitre la position d'une form

Signaler
Messages postés
87
Date d'inscription
jeudi 5 novembre 2009
Statut
Membre
Dernière intervention
3 janvier 2012
-
Messages postés
87
Date d'inscription
jeudi 5 novembre 2009
Statut
Membre
Dernière intervention
3 janvier 2012
-
Bonsoir a tous,

Avant tout je vous souhaite de joyeuses fêtes en espérant que le sapin a été chargé de cadeaux .

Bon, j'ai une question sans réponse malgré mes recherches sur le net.

Je voudrais connaitre la position de ma form (location) pour pouvoir l'enregistrer dans un fichier texte pour que lorsque l'utilisateur ferme et réouvre le programme, celui-ci se mette à la même position. De même, comment peut on savoir que la form a été déplacé (déclenchement d'un événement lors du déplacement ?)


Merci beaucoup

7 réponses

Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
15
La propriété contenant la position du formulaire : Location
L'évènement déclenché lors de son déplacement : Move
---
VB.NET is good ... VB6 is better
Messages postés
87
Date d'inscription
jeudi 5 novembre 2009
Statut
Membre
Dernière intervention
3 janvier 2012

Bonjour,

Merci pour ton aide. En faite, ce qui m'interessais c'est de connaitre la position de ma form. On les obtiens avec Me.left et Me.right. Ces deux paramètres doivent être sauvegardé dans un fichier texte. J'ai donc écris ceci :

Dim Position As String = "(" & Me.Left & "," & Me.Right & ")"
File.WriteAllText("c:\Configuration.txt", Position)

Et là... les problèmes commencent. J'ai une erreur qui me dit que je n'ai pas les privilèges (vista). Comment faire ??

Merci
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
240
Bonjour,

peut-être choisir d'écrire un fichier texte là où (dans un répertoire où) tu as le droit d'écrire. Il est clair qu'il te sera impossible d'écrire dans C: si toi-même ou l'administrateur a affublé ce répertoire de restrictions de sécurité.


____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
15
En même temps, écrire dans la racine du DD système est une très mauvaise idée, et heureusement que Vista t'en empêche : qui te dit que celui qui utilise ton application est administrateur de la machine ? Ecris dans %USERPROFILE%\Application Data, là tu n'auras pas de problème pour lire/écrire.
---
VB.NET is good ... VB6 is better
Messages postés
87
Date d'inscription
jeudi 5 novembre 2009
Statut
Membre
Dernière intervention
3 janvier 2012

Salut,

J'ai enregistré le fichier dans c:\test et là ça marche mais à terme je le metrais comme l'as dit ghuysmans99.

Je suis confronté a un souci de programme. Voici mon programme :


If TextBox1.Text = "SIZE" Then

Dim Position As String = Me.Left & "," & Me.Right
File.WriteAllText("c:\test\Configuration.txt", Position)
Exit Sub
End If

...


Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim position As String

On Error GoTo erreur
position = File.ReadAllText("c:\test\Configuration.txt")
Me.Location = New Point(position)
Exit Sub


erreur:
MsgBox("pas de configuration")


End Sub

Au démarrage, ma form s'affiche bien en X mais pas en Y. Elle se met directement tout en haut de l'écran alors que j'avais enregistré la form en milieu d'écran.

Un avis du problème ?
Messages postés
87
Date d'inscription
jeudi 5 novembre 2009
Statut
Membre
Dernière intervention
3 janvier 2012

Apparament, cela viendrait de : "Me.Location = New Point(position)". Si position = 500,500 ça m'affiche la form tout en haut mais si je met Me.Location = New Point(500,500) La fenetre est bien positionné...
Messages postés
87
Date d'inscription
jeudi 5 novembre 2009
Statut
Membre
Dernière intervention
3 janvier 2012

Alors j'ai résolu mon problème. Pour ceux qui seront dans mon cas, voici ce qu'il faut faire :

Enregistrer la position de la form et la stocker dans un fichier texte :

Dim Position As String = Me.Left & "," & Me.To
File.WriteAllText("c:\test\Configuration.txt", Position)


Positionner la form où l'on veut :

Me.Location = New Point(X, Y)

Charger la position de la form :

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim tableau() As String
Dim position As String

position = File.ReadAllText("c:\test\Configuration.txt")
tableau = Split(position, ",")
Me.Location = New Point(tableau(0), tableau(1))
End Sub


Voila