MSGBOX krijgen wanneer er letters worden ingevuld hoe doet ik dat?

Status
Niet open voor verdere reacties.

sdehaas

Gebruiker
Lid geworden
16 dec 2008
Berichten
44
Hallo ik moet voor informatica een Programma maken in VB.NET en hij is af alleen wil ik dat hij in de ABC formule generator een MSGBOX geeft wanneer ik een Letter invoer ipv een getal. hoe doet ik dat?
Ik heb het al voor wanneer er een 0 wordt ingevoerd.
Dit is de code:


Code:
Public Class SMCR

    'Public variabelen

    Public a As Integer
    Public b As Integer
    Public c As Integer
    Public Discriminant As Double
    Public x1 As Double
    Public x2 As Double


' Tabblad 2: ABC-FORMULE GENERATOR code


'Function met formules voor de waarden te berekenen


Code:
 Public Function uitkomsten() As Double

        a = TextBox1.Text
        b = TextBox2.Text
        c = TextBox3.Text

        Discriminant = (b ^ 2) - (4 * a * c)

        x1 = (-b + ((Discriminant) ^ 0.5)) / (2 * a)
        x2 = (-b - ((Discriminant) ^ 0.5)) / (2 * a)


    End Function

' calcbtn voert formule uit en vult de vensters met de antwoorden in



Code:
  Private Sub calcbtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles calcbtn.Click

        a = TextBox1.Text
        b = TextBox2.Text
        c = TextBox3.Text

        If a = 0 Then
            MsgBox("je mag geen letters of een 0 invoeren!", vbOKOnly + vbCritical, "Error")
            If vbOKOnly = True Then Exit Sub


            If b = 0 Then
                MsgBox("je mag geen letters of een 0 invoeren!", vbOKOnly + vbCritical, "Error")
                If vbOKOnly = True Then Exit Sub

                If c = 0 Then
                    MsgBox("je mag geen letters of een 0 invoeren!", vbOKOnly + vbCritical, "Error")
                    If vbOKOnly = True Then Exit Sub



                End If

            End If

        End If



        uitkomsten()

        TextBox5.Text = x1
        TextBox6.Text = x2
        TextBox4.Text = Discriminant




    End Sub



'Tablad 1 : Rooster code

'elke button zorgt ervoor dat de daartoe behorende link afgebeeld wordt in de Displayframe aan de rechterkant
'Rooster

Code:
 Private Sub roosterbtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles roosterbtn.Click

        Displayframe.Navigate("http://www.sintermeerten.nl/intra/rooster/bovenbouw.htm")


        For i = 0 To 9
            Refresh()
        Next

    End Sub

    'uitvalrooster

    Private Sub uitvalbtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles uitvalbtn.Click

        Displayframe.Navigate("http://www.sintermeerten.nl/intra/rooster/dagrooster/pagina.htm")

        For i = 0 To 9
            Refresh()
        Next
    End Sub

'Cupweb pagina

Code:
  Private Sub cupwebbtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cupwebbtn.Click

        Displayframe.Navigate("http://www.sintermeerten.cupweb6.nl/")

        For i = 0 To 9
            Refresh()
        Next
    End Sub

    
End Class






Alvast bedankt,

Sander

P.S. kan iemand me vertellen als die LOOP die zit aan het einde goed is geschreven?
 
Laatst bewerkt door een moderator:
Hi,
het beste kun je testen of de ascii waarde in de letter-range ligt (zie tabel op http://www.newebgroup.com/rod/newillusions/ascii.htm

Met de ASC functie kun je dan de inhoud van de textbox testen (values 65 To 90 en 97 To 122)

Als de veldlengte alleen maar 1 is dan is jouw methode ok, anders zou ik een onchange of keypress-event gebruiken. De ASC()-functie is een oude functie maar wel bruikbaar in .NET
 
Een voorbeeld in C#:

[cpp]
int n = 0;
try
{
n = int.parse(tekstbox.Text); // int = string gaat niet werken lijkt mij, oftewel a = TextBox1.Text is fout :p
}
catch (Exception ex)
{
MessageBox.Show(this, "Je mag geen letters invoeren!", ex.Source);
}

if (n == 0) MessageBox.Show(this, "Je mag geen nul invoeren!"); // edit: hier stond a == 0, terwijl ik hier n gebruik :p
[/cpp]
 
Laatst bewerkt:
Volgens mij met de Try manier:

PHP:
Try
a = CInt(TextBox1.Text)
Cach ex As Exception
MsgBox("Je mag geen letters invoeren!")
End Try

Hij zal nu een berichtje geven dat je geen letters mag invoeren als hij de text in Textbox1.Text niet kan converteren naar een Integer.

P.S. dit is in VB 2008 gemaakt.
 
@CoD_NL je doelstelling van je antwoord ontgaat mij volkomen. Verwijderd dus.
 
Ik zou inderdaad een try/catch statemend gebruiken om letters te weren.
Je kan natuurlijk ook a t/m z uit de textbox vissen, maar dat lijkt me niet handig.
 
Ik heb dit programma zelf een keer gemaakt. Ik heb de SC nog voor je. Ik zou gewoon letters blokkeren en de entry alleen voor cijfers laten.

Ik ga even voor je kijken.

Ik zie net dat ik geen blokkering heb. Momentje ik zal een nieuw project er bij pakken waar ik dat wel heb.

Rar (SC): http://dl.dropbox.com/u/4929842/ABCFormuleSC.rar

Voor toelating alleen cijfers en backspace toets:
Code:
Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress

        Dim allowedChars As String = "0123456789" & vbBack

        If allowedChars.IndexOf(e.KeyChar) = -1 Then
            e.Handled = True
        End If

    End Sub

Over je wiskundige kennis:
B en C mogen beide 0 nul zijn. De grafiek x^2 is ook een kwadratische grafiek op te lossen met de ABC formule (0,0) komt er dan uit. Alleen A mag geen nul zijn, de rest wel.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan