Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it L'avatar di Løque
    Registrato dal
    Oct 2007
    Messaggi
    177

    [VB.NET] MsgBox Yes / No

    codice:
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            MsgBox("Vuoi entrare?", MsgBoxStyle.YesNo, "Entrata")
            If MsgBoxResult.No Then
                MsgBox("Torna quando vuoi!", MsgBoxStyle.Critical, "Non entro")
                End
            End If
            If MsgBoxResult.Yes Then
                
    'VORREI CHE ENTRASSE NORMALMENTE NEL PROGRAMMA
    
            End If
        End Sub
    End Class
    Mi guardate attentamente questo codice per favore?
    Non riesco a far girare questo algoritmo... ovvero sto creando un programmino, nel quale appena clicko sull'icona per far partire il programma dovrebbe apparire la MsgBox che dice la scritta che ho messo sopra.

    Come vedete la MsgBox chiede se clickare su SI o NO. Io ho messo gli if, se clicko su NO mi fa apparire l'altra MsgBox che dice ciò che ho scritto nel codice e chiude il programma, mentre se clicko su SI, vorrei che entrasse nel programma ma non so qual è la stringa per accedervi




    Help please!!!

    Løque

  2. #2
    Non hai bisogno di scrivere niente in particolare... se non termini il programma (in questo caso tramite End) il suo caricamento procede normalmente. Comunque il tuo codice contiene un errore madornale e qualche istruzione da evitare. Ecco la correzione:
    codice:
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            If MessageBox.Show("Vuoi entrare?", "Entrata", MessageBoxButtons.YesNo) = DialogResult.No Then 'Usa MessageBox.Show invece di MsgBox
                MessageBox.Show("Torna quando vuoi!", "Non entro", MessageBoxButtons.OK, MessageBoxIcon.Asterisk) 'Idem
                Application.Exit() 'Evita di usare End
            End If
        End Sub
    .
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it L'avatar di Løque
    Registrato dal
    Oct 2007
    Messaggi
    177
    Sono certo al 100 % che tra il tuo e il mio ci sono differenze enormi.
    Però mi spieghi perchè hai fatto così per favore? Riga per riga please :master:
    Løque

  4. #4
    Tuo codice:
    codice:
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
      'MsgBox è una funzione: restituisce un valore corrispondente al tasto premuto
      'se la richiami come una procedura il risultato va perduto
      MsgBox("Vuoi entrare?", MsgBoxStyle.YesNo, "Entrata")
    
      'Con questo codice supponi: If MsgBoxResult.No = True Then
      'Che sarà sempre falso, poichè il valore di No è diverso da 0
      If MsgBoxResult.No Then
        MsgBox("Torna quando vuoi!", MsgBoxStyle.Critical, "Non entro")
      'End è obsoleto. Usa Me.Close() o Application.Exit() invece
        End
      End If
    
      'Controllo inutile: se prime è no ed esce, queste istruzioni non vengono eseguite
      If MsgBoxResult.Yes Then    
        'VORREI CHE ENTRASSE NORMALMENTE NEL PROGRAMMA
      End If
    End Sub
    Inoltre MsgBox è funzione di VB6 e non di Vb.Net.

    Codice corretto:
    codice:
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
      'Visualizza il messaggio e ne confronta il risultato con No. Se si è premuto No
      'la condizione viene soddisfatta ed eseguito il codice all'interno
      If MessageBox.Show("Vuoi entrare?", "Entrata", MessageBoxButtons.YesNo) = DialogResult.No Then 'Usa MessageBox.Show invece di MsgBox
        'Saluto
        MessageBox.Show("Torna quando vuoi!", "Non entro", MessageBoxButtons.OK, MessageBoxIcon.Asterisk) 'Idem
        'Esce dall'applicazione
        Application.Exit() 'Evita di usare End
      End If
    End Sub

  5. #5
    Utente di HTML.it L'avatar di Løque
    Registrato dal
    Oct 2007
    Messaggi
    177
    Vi ringrazio molto per i vostri aiuti, comunque anche se è di VB6 non me lo dava come errore, in pratica ciò che avevo scritto io mi funzionava correttamente, non sapevo il sistema di caricare il form senza msgbox una volta clickato su SI.

    Vi ringrazio.

    Altra domanda: l'END perchè me lo sconsigliate?
    Løque

  6. #6
    Non te lo dà come errore poichè Vb.Net gode di molte funzioni e statement del vecchio vb6, ma ciò non significa che possano essere usate senza conseguenze. L'uso delle classi .Net è consigliato perchè è più "in sintonia" con lo spirito OOP del linguaggio e inoltre, se si volesse convertire il codice in C# o J#, ad esempio, o altri linguaggi .Net non sarebbe possibile convertire le espressioni riprese da VB6.

  7. #7
    Utente di HTML.it L'avatar di Løque
    Registrato dal
    Oct 2007
    Messaggi
    177
    Grazie!

    Comunque continuo ad usare END
    Løque

  8. #8
    Non usare End. Va assolutamente evitato per i motivi che abbiamo citato altre volte (fai una ricerca nel forum).
    Amaro C++, il gusto pieno dell'undefined behavior.

  9. #9
    Utente di HTML.it L'avatar di Løque
    Registrato dal
    Oct 2007
    Messaggi
    177
    Mi trova 7 pagine di roba

    potresti dirmelo tu per favore?
    Løque

  10. #10
    L'istruzione End chiude brutalmente l'applicazione, senza finire di processare i messaggi pendenti; questo in alcuni casi può portare a problemi. Inoltre anche qui vale il discorso di usare oggetti del framework indipendenti dal linguaggio.
    Amaro C++, il gusto pieno dell'undefined behavior.

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.