Jag har försökt att få så att användaren bara kan skriva udda tal men kan inte få det att bli så. Har 2 textrutor: txtStar och txtOutput samt en knapp, och programmet ska kolla detta innan den gör sin beräkning och visar svaret, så här har jag försökt att göra var har jag gjort fel?? svara till en nybörjare/mvh christina Vet inte om jag förstår problemet korrekt. Du säger att du vill förhindra jämna tal, men den kod du skrivit verkar förhindra alla tal där 0, 2, 4, 6 och 8 ingår. Under förutsättning att du vill förhindra jämna tal (mao 2 tillåts inte, men 21 tillåts) hade jag gjort så här: tack, det blev helt rätt, men jag som är nybörjare förstår inte alla händelser som man kan använda så keypress var det som jag tänkte på, men förstod att det inte var helt rätt, men nu när du förklarade så ser jag att det är klart att jag tog med alla dessa siffror. Christina,Att enbart skriv udda tal i vb.net
Private Sub txtStar_keypress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtStar.KeyPress
Dim KeyAscii As Integer
KeyAscii = Asc(e.KeyChar)
Dim txt1 As String = "Enter a odd number"
Select Case KeyAscii
Case 49 To 57 'Tal 0-9
Case 50
Call ErrorMessage(txt1)
txtStar.Focus()
Case 52
Call ErrorMessage(txt1)
txtStar.Focus()
Case 54
Call ErrorMessage(txt1)
txtStar.Focus()
Case 56
Call ErrorMessage(txt1)
txtStar.Focus()
Exit Sub
Case Else
txtStar.Focus()
End Select
End subSv: Att enbart skriv udda tal i vb.net
Först, jag hade använt händelsen Validating istället för KeyPress, eftersom annars sker validering innan användaren är klar med att mata in sitt värde.
Sedan, själva valideringen hade jag gjort med operatorn Mod. Du skulle kunna göra nåt åt det här hållet:
Private Sub txtValue_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles txtValue.Validating
Dim val As Integer
Try
val = Int32.Parse(Me.txtValue.Text)
Catch ex As System.FormatException
MessageBox.Show("Det där är ju inte ens ett tal!")
e.Cancel = True
Return
End Try
If (0 = val Mod 2) Then
MessageBox.Show("Men det där talet är la inte udda.")
e.Cancel = True
Return
End If
End Sub
Hoppas att detta är till hjälp!Sv: Att enbart skriv udda tal i vb.net
finns det någonstans man kan läsa om dessa händelser på svenska. Sv: Att enbart skriv udda tal i vb.net
Trevligt att det löste sig! Jag vill ta tillfället i akt och tips dig om att du placerar VB.NET relaterade fårgor i VB.NET forumet som du hittar under ".NET" sen "Visual Basic - .NET" så kommer du med sannolik att få fler och snabbare svar på dina fårgor. Detta forum (Visual Studio.NET) är tänk att användas för frågpr gällande utvecklingsmiljön Visual Studio.NET