Hét vraag- en antwoordplatform van Nederland

Visual basic. Ik heb een tekstbox gemaakt. alleen cijfers zijn mogelijk. hoe zorg ik ervoor dat het hoogste fijfer 59 is?

Ik gebruik visual basic. ik heb ingesteld dat je alleen cijfers kunt invoeren in een tekstbox. maar ik wil dat het hoogste cijfer 59 is. wie weet hier de code voor?

Verwijderde gebruiker
10 jaar geleden
1K

Heb je meer informatie nodig om de vraag te beantwoorden? Reageer dan hier.

Antwoorden (1)

Ik neem aan dat het om winforms gaat en dat je al tijdens het intypen wilt controleren. Je kunt het OnChange event afvangen en daarin de validatie doen. Wel tricky, want je moet ook rekening houden met bv. clipboard paste. Misschien is voor jouw probleem een spinbutton wel handiger.

Toegevoegd na 13 uur:
OK, ik zei OnChange, beter is het KeyPress event. Hiermee kun je namelijk dit event op 'Handled = True' zetten, en onderdruk je het karakter dat op het punt staat toegevoegd te worden. De handler ziet er dan als volgt uit:

Private Sub TextBox1_KeyPress(sender As System.Object, e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
Dim currentValue, wouldBeValue As String
currentValue = TextBox1.Text

' Control chars (pijltjestoetsen, backspace e.d. moeten niet worden tegengehouden
If (Not Char.IsControl(e.KeyChar)) Then

' Wat zou de waarde van de textbox worden als dit karakter 'door mag'
' Hou rekening met de caret positie en evt. geselecteerde karakters
currentValue = currentValue.Remove(TextBox1.SelectionStart, TextBox1.SelectionLength)
wouldBeValue = currentValue.Insert(TextBox1.SelectionStart, e.KeyChar.ToString())

Dim nr As Integer
If (Integer.TryParse(wouldBeValue, nr)) Then
If (nr > 59) Then
' Met deze keypress wordt het getal te groot, dus niet doorlaten
e.Handled = True
End If
Else
' Geen getal? Dan zeker niet doorlaten
e.Handled = True
End If
End If
End Sub

Je ziet, niet triviaal omdat je ook de positie van de caret mee moet nemen. Deze code gaat nog steeds mis als je via het clipboard een getal invoert... maar verder doet dit wel wat je wil.

De spinbutton heet in VB overigens de NumericUpDown button.
(Lees meer...)
Verwijderde gebruiker
10 jaar geleden
Verwijderde gebruiker
10 jaar geleden
Ik heb het antwoord uitgebreid. Ik hoop wel dat je het niet over een web-applicatie hebt, want dit antwoord slaat op VB.NET en WinForms.

Weet jij het beter..?

Het is niet mogelijk om je eigen vraag te beantwoorden Je mag slechts 1 keer antwoord geven op een vraag Je hebt vandaag al antwoorden gegeven. Morgen mag je opnieuw maximaal antwoorden geven.

0 / 2500
Gekozen afbeelding