Newsgroup: it.comp.lang.visual-basic
Titolo: Posizione maschera

Ciao, 
 
in un' applicazione creata con vb 2005 express, ho inserito un timer che ogni 100 ms registra la posizione della form sullo schermo in 2 TextBox :
 
Private Sub RecPos_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RecPos.Tick
 
        'Leggo ogni 100 ms la posizione della form
        Me.txtX.Text = Me.Left
        Me.txtY.Text = Me.Top
 
End Sub
 
Alla chiusura dell' applicazione salvo la posizione in un file .ini così da riaprire l'app nella stessa posizione la volta successiva :
 
IniWrite("C:\Cronometro setting.ini", "Home", "Top", txtY.Text)
IniWrite("C:\Cronometro setting.ini", "Home", "Left", txtX.Text)
 
Me.Left = IniRead("C:\Cronometro setting.ini", "Home", "Left")
Me.Top = IniRead("C:\Cronometro setting.ini", "Home", "Top")
 
capita però che a volte all' apertura non vedo la form e ho scoperto che nel file ini viene scritto questo :
 
Left = -32000
Top = -32000
 
come è possibile che accada questo e soprattutto come posso risolvere?
grazie
Marco

 Top = -32000
 
Non sono sicuro al 100%, ma quelle coordinate dovrebbero essere quelle 
assegnante a una form minimizzata. Potresti controllare alla chiusura 
che le form non sia minimizzata, in caso contrario non aggiorni la 
posizione sull'INI.
 
-- 
Saluti
VITRIOL

 Potresti controllare alla chiusura
 
PS
Ah, il codice che scrive nell'INI lo devi mettere in FormClosing *non* 
in FormClosed
 
-- 
Saluti
VITRIOL

Il codice è su FormClosing quindi corretto.
 
ora su load stavo provando così
 
            If Me.Left < 0 Then
                txtX.Text = 300
            End If
 
            If Me.Top < 0 Then
                txtY.Text = 300
            End If
 
Cioè se nel file ini vado a - apro con coordinate specifiche
sembra però ignorare la cosa forse perchè lo vede come testo e non come numero?
 
dici che magari chiudono l' app con form minimizzata tramite tasto destro poi "Ciudi"? mi sembra strano ma tutto può essere...
come intercetto se la form è minimizzata? con Me.MinimizeBox = True o False?

 come intercetto se la form è minimizzata? con Me.MinimizeBox = True o False?
 
If Me.WindowState = FormWindowState.Maximized Then
 
......
......
 
 
-- 
Saluti
VITRIOL

 FormWindowState.Maximized
 
Vabbé, ovviamente era FormWindowState.Minimized
 
 
-- 
Saluti
VITRIOL

Cerco di spiegarmi meglio.
 
attraverso un cronometro (RecPos tick) registro ogni 100 ms la le posizioni Top e Left in 2 textBox.
Alla chiusura, il valore delle textbox viene messo in un file ini così da recuperare le informazioni al prossimo avvio dell' applicazione, magari sbaglio il concetto...
l' idea è quella di fare in modo che l' operatore mette la form dove vuole e se la ritrova in caso di chiusura e riapertura.
 
il tutto funziona ma se come detto nel file ini per qualche motivo ho valori negativi, è ovvio che l' app si apre al di fuori del campo visibile dello schermo

 attraverso un cronometro (RecPos tick) registro ogni 100 ms la le posizioni Top e Left in 2 textBox.
 
Ma perché? Non puoi prendere semplicemente la posizione alla chiusura e 
scriverla nel file? Perché la posizione dovrebbe essere aggiornata ogni 
100 ms? Perché andare a scriverla in due textbox? La devi vedere mentre 
usi l'applicazione?
 
-- 
Saluti
VITRIOL

Anche se sono alle prime armi, ciò non toglie che possa essere una pecora!! :)
effettivamente le TextBox non servono.
Ora ho fatto come dici e sembra funzionare tutto, se trova un valore negativo riparte da 300.
Farò un po' di prove ma credo avere risolto.
grazie 1000 e buona giornata
Marco