[vb] hele getallen invoeren in textbox

Pagina: 1
Acties:
  • 352 views sinds 30-01-2008
  • Reageer

  • MaartenK18
  • Registratie: Oktober 2004
  • Laatst online: 06-01-2022
Ik wil graag hele getallen invoeren in een textbox, maar weet niet hoe ik dit voor elkaar krijg, nu heb ik al in een ander topic het volgende zien staan,

code:
1
2
3
If IsInteger(getal) = False Then 
  msgbox "GEEN INTEGER" 
End If


Maar als ik dit invoer zegt mijn VB dus dat ie IsInteger niet kent.

Wat is hier het probleem ?

  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 18-05 09:50

pjvandesande

GC.Collect(head);

Was het niet IsNumeric in vb, heb is voor mij al weer wat jaartjes terug.

  • MaartenK18
  • Registratie: Oktober 2004
  • Laatst online: 06-01-2022
Dat staat dus inderdaad ook in dat andere topic, maar dan kan je nog decimale getallen invullen, en dat is dus ook niet de bedoeling.

  • Tukk
  • Registratie: Januari 2002
  • Laatst online: 18-05 08:59

Tukk

De α-man met het ẞ-brein

IMHO is dit vrij basic :X ;)

Visual Basic:
1
2
3
If getal = round(getal,0) then
  msgbox"is een integer"
end if 


Je controleer de twee string, de 1 die is ingevoerd en de de ander zoals de string er uit ziet nadat is de decimalen er af hebt gehaald.

Omdat dit een probleem oplevert als mensen er geen getal maat tekst inplakken zou ik de Isnumeric functie gebruiken voor dat je deze code uitvoert:
Visual Basic:
1
2
3
4
5
6
7
8
9
If Isnumeric(getal) then 
  If getal = round(getal,0) then
    msgbox"is een integer"
  else 
     msgbox "wel getal, geen int"
  end if 
else
  msgbox "niet eens een getal, dombo!"
end if 

[ Voor 76% gewijzigd door Tukk op 04-01-2005 14:18 ]

Q: How many geeks does it take to ruin a joke? A: You mean nerd, not geek. And not joke, but riddle. Proceed.


  • Ullie
  • Registratie: December 2004
  • Niet online
Degene die de code heeft gemaakt waarin 'IsInteger' wordt gebruikt heeft deze functie waarschijnlijk zelf geschreven om de invoer te controleren.
Je zou dus bij een numerieke waarde (IsNumeric) kunnen controleren of het een geheel getal betreft door te kijken of de restwaarde bij een deling door 1 gelijk is aan 0.

  • Suaver
  • Registratie: Januari 2004
  • Laatst online: 18-05 10:58

Suaver

jokecoat

Je kunt ook de andere weg eromheen werken:
CInt(expression) is een functie die je kan gebruiken om het af te ronden naar een INT, dan kun je hem af laten ronden in een nieuwe variable. En daarna de 2 variables vergelijken, als ze hetzelfde zijn is het een integer als ze niet het zelfde zijn is het geen integer.

You, me, us, together, me, us, you, we, us, you, me... DONE.


  • Lorn
  • Registratie: Maart 2000
  • Laatst online: 13-01-2025

Lorn

I have a bad feeling...

Je kunt van de textbox het KeyPress event gebruiken. Dit event geeft je de ASCII code van de toets die is ingedrukt. Je kijkt of dit een cijfer is of een backspace (trust me on this one), is dit niet het geval dan verander je de ASCII code in 0. Als de ASCII code op 0 wordt gezet dan zal de invoer niet in de textbox terecht komen.
Visual Basic:
1
2
3
4
5
Private Sub txtEdit_KeyPress(KeyAscii As Integer)
  If Not(KeyAscii = 8) And ((KeyAscii < 48) Or (KeyAscii > 57)) Then
    KeyAscii = 0
  End If
End Sub

[ Voor 24% gewijzigd door Lorn op 04-01-2005 14:27 ]


Verwijderd

Je kunt het ook afvangen bij de keypress van die textbox inderdaad

[ Voor 81% gewijzigd door Verwijderd op 04-01-2005 14:36 . Reden: te laat ]


  • Tukk
  • Registratie: Januari 2002
  • Laatst online: 18-05 08:59

Tukk

De α-man met het ẞ-brein

@Lorn, trust me, vergeet ook de 'Del' niet. ;)

Q: How many geeks does it take to ruin a joke? A: You mean nerd, not geek. And not joke, but riddle. Proceed.


  • Lorn
  • Registratie: Maart 2000
  • Laatst online: 13-01-2025

Lorn

I have a bad feeling...

Tukk schreef op dinsdag 04 januari 2005 @ 14:41:
@Lorn, trust me, vergeet ook de 'Del' niet. ;)
Zeker weten? Heb m'n code even getest en de 'del' werkt gewoon. Gewoon een nieuw project gemaakt, 1 editbox op het form gezet en mijn code d'r in geplakt. Misschien dat de 'KeyPreview' property van het form wat uitmaakt? Standaard hoef je de 'del' in ieder geval niet af te vangen zoals dat bij de 'backspace' wel moet.

Edit: Oops... je hebt natuurlijk ook nog de 'del' op het numerieke gedeelte van het toetsenbord. Dit doet het dus inderdaad standaard niet. Weer wat geleerd :)

Edit2: Hmm... ik had mijn NumLock nog aan staan. Toen die eenmaal uitstond bleek ook de 'del' toets op het numerieke gedeelte te werken met de routine zoals die hier een paar posts boven staat. Had ik dan toch gelijk?

[ Voor 43% gewijzigd door Lorn op 04-01-2005 15:02 . Reden: I might be right after all... ]


  • MaartenK18
  • Registratie: Oktober 2004
  • Laatst online: 06-01-2022
Bedankt allemaal!

  • Lorn
  • Registratie: Maart 2000
  • Laatst online: 13-01-2025

Lorn

I have a bad feeling...

Hoe heb je 't nou opgelost?

  • MaartenK18
  • Registratie: Oktober 2004
  • Laatst online: 06-01-2022
Met de eerste manier, die was voor mij nog een beetje te begrijpen. De tweede werd voor mij al aardig ingewikkeld. Maar het werkt nu goed.

  • Azzmodan
  • Registratie: Juni 2000
  • Laatst online: 21:12
Daarna moet je nog wel wat controles doen, want je kan er op die manier wel niet numerieke waarden in plakken enzo, wat erg vervelend kan zijn als je die niet verwacht.
Pagina: 1