Form Minimized Maximized Normal all'avvio

di AntoAnto il
16 risposte

VBnet 2019

Mi succede ogni tanto che se si chiude un programma in MINIMIZED, dato che salva la posizione in user.config, al riavvio il programma “non si fa vedere” e riparte in MINIMIZED e anche clickando sull'icona NON si apre e non si vede la finestra del programma.

Devo per forza cancellare il user.config

Dovrei mettere nel form.load all'avvio che se è MINIMIZED forza in NORMAL ma non ci riesco completamente.

Sono riuscito a capire, trovare e vedere dove/come e perchè e vedo che salva nel suo file di user.config:

<setting name="Location" serializeAs="String">
<value>-32000, -32000</value>

che al riavvio evidentemente non si vede… non riparte nemmeno clickando sull'icona aperta.

Ho provato un po' di tutto e ho trovato che inserendo questo nel form.load:

       If Me.Location.X = -32000 And Location.Y = -32000 Then
           WindowState = FormWindowState.Normal
       End If

che funziona anche col -32000/-32000 e quindi se risulta a -32000/-32000 si riapre normalmente forzando la posizione nuova “Normal”.

Sicuramene c'è di meglio che io non conosco dato che non so se il -32000/-32000 è sempre per il minimized o anche per altro…

inoltre se metto 

if WindowState = FormWindowState.minimized then

non funziona quando è a -32000/-32000

e se provo a mettere

    Me.Location = New Point(0, 0)

per posizionarlo forzatamente a 0,0, quando all'avvio risulta a -32000/-32000 mi dice nel codice

Errore    BC30311    Non è possibile convertire il valore di tipo 'Point' in 'Point'.  

Qualche consiglio più intelligente del mio su come usare questi comandi per la problematica all'avvio?

Grazie mille

16 Risposte

  • E qual'e' la problematica all'avvio?

    Non e' chiaro cosa vuoi chiedere, ed in particolar modo per che motivo il WindowState = FormWindowState.Normal  non ti aggrada

    Fai una richiesta precisa

  • Puoi provare nella Load senza If con la semplice riga

    WindowState = FormWindowState.Normal
  • 01/09/2023 - oregon ha scritto:


    Puoi provare nella Load senza If con la semplice riga

    WindowState = FormWindowState.Normal

    Si grazie Oregon, infatti nel frattempo avevo già inserito “solo” quella linea senza l'IF nel form.load così da forzare in ogni caso sempre l'apertura in “Normal”. 

    Mi chiedevo comunque se il -32000/-32000 corrisponde al minimized?

    Difatti ogni tanto mio succedeva che pure in RUN non vedevo la finestra dell'applicazione da nessuna parte come spiegato sopra... ;-(

    ps: Per curiosità, qualcuno sa cosa sbaglio nella sintassi del location che metto nel form.load per posizionare il form all'avvio su 0,0, che con

        Me.Location = New Point(0, 0)


    mi dice 

    Errore    BC30311    Non è possibile convertire il valore di tipo 'Point' in 'Point'.  

    Grazie ciao

  • NON FUNZIONA!

    Accidenti, purtroppo anche se nel form.load ho il 

    WindowState = FormWindowState.Normal

    sono riuscito a ricreare il problema e all'avvio non funziona se:

    1. Nella mia applicazione chiudo l'applicazione MINIMIZED
    2. tasto destro sull'icona del programma e X CHIUDI TUTTE LE FINESTRE
    3. riavvio il programma e NON si apre, resta solo l'icona nella barra applicazioni ma anche clickando non si apre
    4.  Nel USER.CONFIG in ho il -32000 -32000
    5. nel form load ho all'inizio la linea <WindowsState = FormWindowsState.Normal>
    6. ciò malgrado niente, non lo apro… 

    cancello il USER.CONFIG e riparte tranquillamente 

    il file creato a questo pro nel mysetting user.config:

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
       <userSettings>
           <Programma.My.MySettings>
               <setting name="Location" serializeAs="String">
                   <value>-32000, -32000</value>
               </setting>
               <setting name="resolution" serializeAs="String">
                   <value>-1</value>
               </setting>
               <setting name="Monitor" serializeAs="String">
                   <value>0, 0</value>
               </setting>
               <setting name="Size" serializeAs="String">
                   <value>800, 450</value>
               </setting>
           </Programma.My.MySettings>
       </userSettings>
    </configuration>

    Lo cancello o cambio il -32000,-32000 con 0,0 e riparte…

    Qualche consiglio per evitare questo problema?

    Grazie.

  • Aggiungo:

    se metto nel form load:

            If Me.Location.X = -32000 And Location.Y = -32000 Then MsgBox("TEST")

    il msgbox TEST esce ma non succede nulla poi, OK e anche se subito dopo ho il 

    WindowState = FormWindowState.Normal


    non viene visualizzato, è sempre solo in ICONA sulla barra…

    boh.. non ne ho idea… qualche consiglio?

  • Xml????

    Ma di che cosa si sta parlando?

    Cosa c'entra un file xml con un form?

  • 04/09/2023 - sihsandrea ha scritto:


    Xml????

    Ma di che cosa si sta parlando?

    Cosa c'entra un file xml con un form?

    Mai sentito parlare dei mysetting e user.config descritti sopra?

    Penso proprio di no!

  • 04/09/2023 - AntoAnto ha scritto:


    Lo cancello o cambio il -32000,-32000 con 0,0 e riparte…

    Una domanda: ma il caricamento dei dati dal file .config in formato XML lo fai tu manualmente, oppure avviene in automatico?

  • 04/09/2023 - Alka ha scritto:

    Una domanda: ma il caricamento dei dati dal file .config in formato XML lo fai tu manualmente, oppure avviene in automatico?

    Lo fa in automatico lo salva e lo carica all'avvio, per salvare la posizione del form.

    Quindi è quello che crea VBnet2019.

    Come descritto sopra, se parto col -32000/-32000 del Minimized dalla sequenza sopra descritta, che vedo col msgbox nel form.load, non mi forza comunque il Normal 

    boh… ;-(

  • 04/09/2023 - AntoAnto ha scritto:


    Lo fa in automatico lo salva e lo carica all'avvio, per salvare la posizione del form. […]

    Perché non passare a un sistema di salvataggio “manuale”, così puoi controllare ciò che viene salvato (e ripristinato) e cosa no? :)

  • 05/09/2023 - Alka ha scritto:


    Perché non passare a un sistema di salvataggio “manuale”, così puoi controllare ciò che viene salvato (e ripristinato) e cosa no? :)

    Funzioni

    Uso già in altre applicazioni i classici iniWrite e iniLoad, ma mi piaceva l'idea di lasciarlo fare al soft, anche se lo salva in posti strani…

    Ma dato che il problema è un altro mi piaceva poterlo risolvere: infatti all'avvio nel form.load anche col my.settin/user.config intercetto tranquillamente il -32000/-32000, ma che non capisco è il perchè forzando in “Normal” non me lo genera all'avvio… forse l'automatico del my.setting in user.config lo legge dopo il form.load?

    Forse mettere il “WindowState = FormWindowState.Normal” da qualche altra parte e non nel form.load ma non saprei dove/come, oppure forzare un'altra location, ma come scritto sopra, se è in questo stato di “icona” mi sa che anche facendolo “manuale” sarebbe la stessa cosa (vedi procedura per generare il problema descritto sopra)…

Devi accedere o registrarti per scrivere nel forum
16 risposte