Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    [VB.NET]due problemi: uno con l'input, uno con i form

    buonasera a tutti, come da titolo ho due problemi.
    Per quanto riguarda il primo problema, avrei bisogno di sapere come si deve controllare l'input inserito in un textbox o in un inputbox sia corretto, nel senso che rispetti il tipo di variabile richiesta; in caso contrario, o in caso di errore ( per esempio un punto al posto di una virgola in un numero decimale ) un msgbox deve avvisare l'utente, evitando il noioso crash del programma.
    Il secondo problema, che non c'entra niente col primo, riguarda la gestione dei form: quando ne apro uno, tramite un pulsante in un altro form e poi lo chiudo, riaprirlo diventa un problema! Nel senso che non lo apre più, come bisogna fare? Il form lo chiudo con me.close()

  2. #2

    Re: [VB.NET]due problemi: uno con l'input, uno con i form

    Originariamente inviato da emanuele91
    buonasera a tutti, come da titolo ho due problemi.
    Per quanto riguarda il primo problema, avrei bisogno di sapere come si deve controllare l'input inserito in un textbox o in un inputbox sia corretto, nel senso che rispetti il tipo di variabile richiesta; in caso contrario, o in caso di errore ( per esempio un punto al posto di una virgola in un numero decimale ) un msgbox deve avvisare l'utente, evitando il noioso crash del programma.
    Racchiudi il codice di conversione da stringa al tipo che ti interessa in un blocco Try...Catch e gestisci l'eccezione InvalidCastException.
    Il secondo problema, che non c'entra niente col primo, riguarda la gestione dei form: quando ne apro uno, tramite un pulsante in un altro form e poi lo chiudo, riaprirlo diventa un problema! Nel senso che non lo apre più, come bisogna fare? Il form lo chiudo con me.close()
    Posta il codice di apertura del form.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3

    Re: [VB.NET]due problemi: uno con l'input, uno con i form

    Originariamente inviato da emanuele91
    buonasera a tutti, come da titolo ho due problemi.
    Per quanto riguarda il primo problema, avrei bisogno di sapere come si deve controllare l'input inserito in un textbox o in un inputbox sia corretto, nel senso che rispetti il tipo di variabile richiesta; in caso contrario, o in caso di errore ( per esempio un punto al posto di una virgola in un numero decimale ) un msgbox deve avvisare l'utente, evitando il noioso crash del programma.
    Oppure gestisci l'evento Validating della textbox e controlli la correttezza del valore inserito utilizzando varie tecniche, tra le quali una, potrebbe essere l'uso delle Regular Expression.

    Il secondo problema, che non c'entra niente col primo, riguarda la gestione dei form: quando ne apro uno, tramite un pulsante in un altro form e poi lo chiudo, riaprirlo diventa un problema! Nel senso che non lo apre più, come bisogna fare? Il form lo chiudo con me.close()
    Concordo con MItaly

    Facci sapere...
    Ciao

  4. #4
    I problema: ok grazie, adesso provo a sistemare questi text box!

    II problema: ecco qui il codice semplificato:

    Public Class Form1
    Dim form2 As New Form2
    Private Sub btnApri_Click
    form2.Show()
    End Sub
    End Class

    Public Class Form2
    Private Sub btnChiudi_Click
    me.close()
    End Sub
    End Class

    Se apro il form2, lo chiudo (o col tasto col con la crocetta rossa), e provo a riaprirlo mi da errore.

  5. #5
    Ciao.
    Il secondo problema è normale perchè, una volta chiuso il form, il riferimento ad esso viene *distrutto*, pertanto la variabile form2, torna ad avere un valore nullo e ricevi un'eccezione NullReferenceException.

    Devi modificarlo in questo modo:

    codice:
    Public Class Form1
    Private Sub btnApri_Click
    Dim form2 As New Form2
    form2.Show()
    End Sub
    End Class
    oppure, se vuoi avere la variabile form2 con visibilità a livello di classe:
    codice:
    Public Class Form1
    Private form2 As  Form2
    Private Sub btnApri_Click
    if form2 is nothing then
    form2 = New Form2
    form2.Show()
    else
    form2.activate
    end if
    End Sub
    End Class
    Facci sapere...
    Ciao

  6. #6
    Be', è normale, stai cercando di riaprire la stessa istanza del form che ormai è stata chiusa, per cui le sue risorse sono state liberate: come indica la documentazione del metodo Close:
    Quando viene chiamato il metodo Close su un Form visualizzato come finestra non modale non è possibile chiamare il metodo Show per rendere il form visibile, poiché le risorse del form sono già state liberate.
    .
    Il secondo problema è normale perchè, una volta chiuso il form, il riferimento ad esso viene *distrutto*, pertanto la variabile form2, torna ad avere un valore nullo e ricevi un'eccezione NullReferenceException.
    La questione non è così, rimane un riferimento ad un oggetto form (che ancora esiste, visto che il riferimento viene tenuto in vita dalla variabile Form2) ormai inutilizzabile.
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Originariamente inviato da MItaly
    La questione non è così, rimane un riferimento ad un oggetto form (che ancora esiste, visto che il riferimento viene tenuto in vita dalla variabile Form2) ormai inutilizzabile.
    Si ... scusa, l'oggetto viene distrutto ed il riferimento punta ad un oggetto inutilizzabile.
    Ciao

  8. #8
    La prima opzione funziona, la seconda, che mi sembra più interessante, no..
    Ad ogni modo, grazie! =)

  9. #9
    Cosa non funziona??
    Che errore ti da?

  10. #10
    codice:
    Public Class Form1
    Private form2 As Form2
    Private Sub btnApri_Click
    if form2 is nothing then
    form2 = New Form2
    form2.Show()
    else
    form2.activate
    end if
    End Sub
    End Class

    non da errore, semplicemente non mi fa aprire una sconda volta un form che chiudo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.