Kommatal i TextBox og TextBox du kun kan skrive tal i
Jeg er ved at prøve at lave et lille mattematik program, der kan udregne radius, diameter, areal og omkreds af en cirkel. Der er fire TextBoxe en til radius, en til diameter, en til areal og en til omkreds. Når du så skriver noget i en box regner programmet de andre tre ud, men man kan ikke skrive et kommatal i boxene. Er der nogen der ved hvordan man kan gøre det?
Kan man også gøre så man ikke kan skrive bogstaver i en TextBox altså kun tal?
Min kode ser sådan ud:(Det er lavet i Microsoft Visual Basic 2005 Express Edition)
Public Class Cirkel Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged Dim vRadius As Integer Dim vDiameter As Integer Dim vAreal As Integer Dim vOmkreds As Integer
Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged Dim vRadius As Integer Dim vDiameter As Integer Dim vAreal As Integer Dim vOmkreds As Integer
TextBox1.Text = vRadius TextBox2.Text = vDiameter TextBox3.Text = vAreal TextBox4.Text = vOmkreds Label5.Text = vRadius End Sub
Private Sub TextBox3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox3.TextChanged Dim vRadius As Integer Dim vDiameter As Integer Dim vAreal As Integer Dim vOmkreds As Integer
TextBox1.Text = vRadius TextBox2.Text = vDiameter TextBox3.Text = vAreal TextBox4.Text = vOmkreds Label5.Text = vRadius End Sub
Private Sub TextBox4_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox4.TextChanged Dim vRadius As Integer Dim vDiameter As Integer Dim vAreal As Integer Dim vOmkreds As Integer
Du bruger integers... Det er usmart af flere grunde... 1. Du vil have kommatal... Integers er hele tal... 2. Cirkler (Pi i det hele taget) giver aldrig kun hele tal...
Brug doubles: TextBox1.TextChanged Dim vRadius As Double Dim vDiameter As Double Dim vAreal As Double Dim vOmkreds As Integer
TextBox1.Text = vRadius TextBox2.Text = vDiameter TextBox3.Text = vAreal TextBox4.Text = vOmkreds Label5.Text = vRadius End Sub ------------------------ Grunden til at jeg bruger replace, er at .Net regner i engelsk format internt.. Ie. "." som kommatalsseperator.
Derudover, skal du passe på med at sætte textbox2, 3, 4 til noget. Eftersom at det sætter gang i eventen "Textchanged", som er den du bruger til at sætte dem med...
Dette giver en uendelig loop: Værdi ændret Sæt ny værdi - Værdi ændret - Sæt ny værdi -- Værdi ændret -- Sæt ny værdi --- Værdi ændret --- Sæt ny værdi
Tjaa.. Du kan bruge "Keypress" eventen. Og tjekke om den ASCII værdi der blev indtastet er Større eller lig med 48 (0), og mindre eller lig med 57 (9).
Hvis den ikke er det, så sæt den til 0 (Null, ingen tekst, linjeskrift etc..... Ingenting)
Eks.
Select Case ASCIIVal Case 48 To 57 '0-9 'Do nothing Case asc(".") 'Period (.) 'Do nothing Case Else ASCIIVal = 0 End Select
Det er rigtigt hvad lord_mike siger, du kan også anvende Keypress så skal du bare huske på at hver gang en tast bliver trykket ned ryger siden serverside.
Dette er VB.Net, i programmer... Ikke VB.Net (Sprog) i ASP.Net (Websider). Det eneste man skal gøre... Er at tjekke om "e" (Som er eventen) er det man forventer.
Select Case Asc(e.Keychar) Case Asc(".") Case 48 To 57 Case Else e.KeyChar = "" End Select
Forstår ikke helt hvad det er du erklærer dig uenig i, når din select køres er du da serverside, og du vil komme det hver gang en tast bliver trykket på.
Serverside referer til at du sender din request til en server som behandler og sender tilbage.
Server er i min opfattelse, en server som står hvorsomhelst i verden og behandler data, og ikke en klient som har et VB.Net program. VB.Net behandles jo som et Win32 program på selve maskinen den kører på...
@Andersmd: Prøv at kigge på "Maskedtextbox". Har ikke selv kigget, men beskrivelsen antyder at det har noget at gøre med at du kan sætte en string som validator, hvorefter alt input skal valideres efter den string. Her vil jeg tro du kan skrive f.eks. "0123456789", hvorefter at man ikke kan skrive "abc..[..]"
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.