grinshu
Legacy Member
Hallo iedereen,
1° ik hou mij voor het moment bezig met het maken van een simpele tekstverwerker in VB .NET. En bij de afwerking ervan stuitte ik op volgend probleem:
ik wil net zoals in word bij het afsluiten van het programma'tje een messagebox laten weergeven met de vraag om het desbetreffende document op te slaan met de opties Yes, No, Cancel.
De Bedoeling van de 3 "Knoppen" lijkt me vrij duidelijk. Wanneer de Yes-optie wordt gebruikt, is het de bedoeling dat het bestand wordt opgeslaan of indien het bestand niet reeds is opgeslaan een SaveFileDialog wordt weergegeven. Wanneer de No-optie wordt gebruikt, moet de tekstverwerker gewoon afsluiten zonder verdere handelingen. En bij het derde zit dan mijn probleem: ik wil dat wanneer je op Cancel duwt, je form blijft openstaan zoals het stond voor je op Afsluiten drukte.
Mijn vraag is nu, welke command moet ik daarvoor invoeren in mijn procedure ?
Deze code heb ik al:
Sommige van mijn werkwijzen kunnen misschien korter, maar met mijn kennis leek dit me de korste wijze.
------------------------------------------------------------------------------------------
2° Bij simpel rekenprogramma'tje heb ik een label en een tekstvak. In het label laat ik 2 random getallen genereren en in het tekstvak moet de gebruiker dan het resultaat invoeren. Dit werkt voor de 4 basis bewerkingen: optellen, aftrekken, delen en vermenigvuldigen. Maar bij het delen genereert ie logischerwijs vaak getallen die als resultaat een oneindig komma getal opleveren (bv.: 1 / 3, 2 / 3,...). Dat zou ik willen voorkomen en daarvoor heb ik met een Do ... Loop-lus gewerkt. De code ziet er als volgt uit:
Alles werkt prima tot er dan getallen worden gegenereert waarvan de uitkomst verschillend is aan 0 of 1. Met andere woorden: bewerkingen zoals 1 / 1, 4 / 4, 0 / 8, ... (steeds met 0 of 1 als resultaat) werken zoals het hoort. Maar wanneer ik dan iets krijg zoals 4 / 1, dan crasht ie wanneer ik het antwoord ingeef en op de "Volgende" knop duw. Deze 'volgende' knop heeft niets met probleem te maken.
Alvast bedankt,
grinshu
BELANGRIJKE EDIT:
het 2e probleem was volledig mijn fout, excuses daarvoor. Ik was vergeten dat het 2e getal geen 0 mag zijn, omdat je niet kan delen door 0.
My bad
1° ik hou mij voor het moment bezig met het maken van een simpele tekstverwerker in VB .NET. En bij de afwerking ervan stuitte ik op volgend probleem:
ik wil net zoals in word bij het afsluiten van het programma'tje een messagebox laten weergeven met de vraag om het desbetreffende document op te slaan met de opties Yes, No, Cancel.
De Bedoeling van de 3 "Knoppen" lijkt me vrij duidelijk. Wanneer de Yes-optie wordt gebruikt, is het de bedoeling dat het bestand wordt opgeslaan of indien het bestand niet reeds is opgeslaan een SaveFileDialog wordt weergegeven. Wanneer de No-optie wordt gebruikt, moet de tekstverwerker gewoon afsluiten zonder verdere handelingen. En bij het derde zit dan mijn probleem: ik wil dat wanneer je op Cancel duwt, je form blijft openstaan zoals het stond voor je op Afsluiten drukte.
Mijn vraag is nu, welke command moet ik daarvoor invoeren in mijn procedure ?
Deze code heb ik al:
Code:
Private Sub frmTekstverwerker_Closed(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Closed
Dim iKnop As Integer, iResultaat As Integer
iKnop = MessageBoxButtons.YesNoCancel
iResultaat = MessageBox.Show("Wilt u de wijzigingen in " & Me.Text & " opslaan?", "Wijzigingen opslaan", iKnop, MessageBoxIcon.Warning)
Select Case iResultaat
Case DialogResult.Yes
If msBestandsnaam = "" Then
If sfd.ShowDialog = DialogResult.OK Then
rtbTekst.SaveFile(sfd.FileName)
msBestandsnaam = sfd.FileName
ElseIf sfd.ShowDialog = DialogResult.Cancel Then
'Hier moet de command komen wanneer cancel gedrukt wordt.
End If
Else
rtbTekst.SaveFile(msBestandsnaam)
End If
Me.Text = sfd.FileName
Case DialogResult.No
'Hier uiteraard geen command omdat hij gewoon de tekstverwerker moet afsluiten zoals de procedure-titel aangeeft.
Case DialogResult.Cancel
'Hier moet de command komen wanneer cancel gedrukt wordt.
End Select
End Sub
------------------------------------------------------------------------------------------
2° Bij simpel rekenprogramma'tje heb ik een label en een tekstvak. In het label laat ik 2 random getallen genereren en in het tekstvak moet de gebruiker dan het resultaat invoeren. Dit werkt voor de 4 basis bewerkingen: optellen, aftrekken, delen en vermenigvuldigen. Maar bij het delen genereert ie logischerwijs vaak getallen die als resultaat een oneindig komma getal opleveren (bv.: 1 / 3, 2 / 3,...). Dat zou ik willen voorkomen en daarvoor heb ik met een Do ... Loop-lus gewerkt. De code ziet er als volgt uit:
Code:
ElseIf mnuDelen.Checked = True Then
Me.Text = "Leren delen"
If mnuTot10.Checked = True Then
miGetal1 = moRandom.Next(0, 10)
miGetal2 = moRandom.Next(0, 10)
Do
miGetal1 = moRandom.Next(0, 10)
miGetal2 = moRandom.Next(0, 10)
lblSom.Text = miGetal1 & " / " & miGetal2
Loop Until miGetal1 Mod miGetal2 = 0
ElseIf mnuTot20.Checked = True Then
miGetal1 = moRandom.Next(0, 20)
miGetal2 = moRandom.Next(0, 20)
lblSom.Text = miGetal1 & " / " & miGetal2
ElseIf mnuTot100.Checked = True Then
miGetal1 = moRandom.Next(0, 100)
miGetal2 = moRandom.Next(0, 100)
lblSom.Text = miGetal1 & " / " & miGetal2
End If
txtUitkomst.Text = ""
End If
Alvast bedankt,
grinshu
BELANGRIJKE EDIT:
het 2e probleem was volledig mijn fout, excuses daarvoor. Ik was vergeten dat het 2e getal geen 0 mag zijn, omdat je niet kan delen door 0.
My bad

