Programma afsluiten msgbox YesNo

Status
Niet open voor verdere reacties.

WILLIAMXXX

Terugkerende gebruiker
Lid geworden
29 nov 2006
Berichten
1.246
Heej

Heb nu een stukje verder als je het programma afsluit heb ik al code:

Code:
  Private Sub main_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        MsgBox("Weet je zeker dat je wilt afsluiten?", MsgBoxStyle.Exclamation Or MsgBoxStyle.YesNo, "Afsluiten...")
    End Sub

Maar hoe kan ik zorgen als ze op Nee klikken het programma niet wordt afgesloten...???

********************************************************************************************************

En hoe kan je een stukje code maken die wordt uitgevoerd zolang het programma actief is?
 
Volgens mij was dat iets van 'cancel = -1'.

Code:
private sub form_unload(cancel as integer)
  cancel = -1
end sub

(Mijn VB kennis is alleen behoorlijk roestig geworden. Maar daar geef ik niks om. :D)

edit: verkeerd gekeken. Het ging over VB.NET;
 
Heej

Heb nu een stukje verder als je het programma afsluit heb ik al code:

Code:
  Private Sub main_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        MsgBox("Weet je zeker dat je wilt afsluiten?", MsgBoxStyle.Exclamation Or MsgBoxStyle.YesNo, "Afsluiten...")
    End Sub

Maar hoe kan ik zorgen als ze op Nee klikken het programma niet wordt afgesloten...???

********************************************************************************************************

En hoe kan je een stukje code maken die wordt uitgevoerd zolang het programma actief is?

Ik weet dat jij het kunt 'vertalen';) Dus hier heb je de VB6.0 Code:

Code:
Private Sub Form_Unload(Cancel As Integer)
Ding1 = MsgBox("Weet U zeker dat U wilt afsluiten", vbYesNo + vbExclamation, "Afsluiten...")
If Ding1 = vbYes Then
End
ElseIf Ding1 = vbNo Then
Cancel = 1
End If
End Sub
 
Het enigste wat ik en de computer niet begrijpen is Ding1
Waar staat dat voor?
 
Ding1 is gewoon een willekeurig gekozen naam voor je MessageBox! Je kunt alles er neerzetten. Wat je doet is:

Je geegt je MessageBox een naam. Vervolgens zeg je, zoals je in de code ziet:
If Ding1 ..... Then --> Zo kun je dus met vbYes en vbNo werken. Je kunt ook neerzetten:

WILLIAMXXX = MsgBox("..............",.....,".....")
Zo heeft je MsgBox een naam gekregen!


Probeer het er anders is achter te zetten:
MsgBox("..............",.....,".....") = WILLIAMXXX
 
Bij deze heb ik ook de vrijheid genomen om WilliamXXX wat meer uitleg te verschaffen
ivm de MsgBox:

Code:
 Private Sub main_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
     Dim iAntwoord As Integer = MsgBox("Weet je zeker dat je wilt afsluiten?", MsgBoxStyle.Exclamation Or MsgBoxStyle.YesNo, "Afsluiten...")
        If iAntwoord = Windows.Forms.DialogResult.No Then
            e.Cancel = True
        End If

        'Of Korter

        If MsgBox("Weet je zeker dat je wilt afsluiten?", MsgBoxStyle.Exclamation Or MsgBoxStyle.YesNo, "Afsluiten...") = Windows.Forms.DialogResult.No Then
            e.Cancel = True
        End If        
 End Sub
 
Het gebruik van het commando End om een programma af te sluiten is geen goed idee. Er zijn een heleboel controls die geladen worden in een VB programma en die blijven in het geheugen hangen als je het programma afsluit met End. Je krijgt daardoor geheugenlekken die het geheugen van je PC zwaar belasten en voor vreemde toestanden, zelfs het blokkeren van je PC, kunnen leiden.
Het is beter om het Unload event van het Form te gebruiken en daarin eventueel een aantal controls uit het geheugen te halen.

In elk form van VB is er een extra event dat geactiveerd wordt als je het form wil sluiten. Dat sluiten kan door een commandbutton waarachter de opdracht 'Unload Me' zit, of via het knopje met het kruisje rechtsboven in de titelbalk, maar ook door een andere oorzaak.
In dit event kan je acties ondernemen zoals een vraag stellen of de gebruiker wel degelijk het form wil sluiten, of de ingevoerde informatie bewaard moet worden, enz...
Het event heeft een parameter Cancel die, afhankelijk van de waarde die je hem in het event toekent, bepaalt of de unload zal uitgevoerd worden of niet. Er zit ook een tweede parameter aan verbonden die aangeeft waardoor de unload gevraagd werd. De unload kan namelijk op verschillende wijzen aangevraagd zijn.
Hieronder een voorbeeld van een dergelijke event-sub gekoppeld aan het Form.
Ik heb in commentaar de verschillende mogelijke oorzaken van het event opgesomd met hun respectievelijke waarde waarop je kan controleren.
Als het programma door Windoze gesloten wordt, bij het afsluiten van het systeem bijvoorbeeld, dan kan je aangeven dat er geen vraag gesteld moet/mag worden of dat het programma automatisch de gegevens moet bewaren, enz...

Dit is VB6 code...
Code:
[FONT="Courier New"]Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
[COLOR="SeaGreen"]  '--------------------------------------------------------------
  ' UnloadMode: Diverse oorzaken van unload
  '--------------------------------------------------------------
  ' vbFormControlMenu   0 De gebruiker heeft op het knopje met het kruisje
  '                       in de titelbalk van het form geklikt.
  ' vbFormCode          1 Het Unload commando is vanuit de programmacode gegeven.
  ' vbAppWindows        2 Het Microsoft Windows operating system wordt afgesloten.
  ' vbAppTaskManager    3 Het Microsoft Windows Taakbeheer sluit de toepassing.
  ' vbFormMDIForm       4 Een MDI kind-form wordt gesloten omdat het MDI form gesloten wordt.
  ' vbFormOwner         5 Een form wordt gesloten omdat zijn eigenaar (van waaruit
  '                       het form gestart werd) afgesloten wordt.
  '--------------------------------------------------------------[/COLOR]  Dim intAntwoord As Integer

  If (UnloadMode = vbFormControlMenu) Then
    intAntwoord = MsgBox("Bent u zeker dat u wil stoppen?", vbQuestion + vbYesNo, "Programma afsluiten")
    If intAntwoord = vbNo Then
      Cancel = True
    End If
  End If
End Sub[/FONT]
 
Laatst bewerkt:
Bij deze heb ik ook de vrijheid genomen om WilliamXXX wat meer uitleg te verschaffen
ivm de MsgBox:

Code:
 Private Sub main_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
     Dim iAntwoord As Integer = MsgBox("Weet je zeker dat je wilt afsluiten?", MsgBoxStyle.Exclamation Or MsgBoxStyle.YesNo, "Afsluiten...")
        If iAntwoord = Windows.Forms.DialogResult.No Then
            e.Cancel = True
        End If

        'Of Korter

        If MsgBox("Weet je zeker dat je wilt afsluiten?", MsgBoxStyle.Exclamation Or MsgBoxStyle.YesNo, "Afsluiten...") = Windows.Forms.DialogResult.No Then
            e.Cancel = True
        End If        
 End Sub

Jeps werkt helemaal goed:thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan