Avatar billede simsen Mester
25. juni 2006 - 19:23 Der er 4 kommentarer og
1 løsning

Validering af felt

I ASP.NET er det muligt at dragge en validation felt ind og så validere den op imod et tekstfelt. Jeg kan ikke finde den i Windows form. Er der en anden der ligner den?

Hvis ikke:

Hvordan tester jeg på, om et felt kun indeholder tal?
Hvordan tester jeg på om en indtastet emailadr er valid (altså med @ og .)?
Hvordan taster jeg på, om der er skrevet noget i et felt?

mvh

simsen :-)
Avatar billede nielle Nybegynder
25. juni 2006 - 20:18 #1
Du kan koble dig på TextBox'ens Validating-event, og hvis indeholdet af tekstboksen ikke stemmer med det du ønsker, så kan du annilere denne:

        private void textBox1_Validating(object sender, CancelEventArgs e)
        {
            TextBox tb = sender as TextBox;

            Regex validator = new Regex(@"^\d*$");
            if (!validator.Match(tb.Text).Success)
            {
                MessageBox.Show("Feltet skal indeholde et heltal!");
                e.Cancel = true;
            }
        }
Avatar billede simsen Mester
25. juni 2006 - 21:28 #2
Kan ikke forstå dit forslag, som jeg ser den tester den ikke på om det er heltal. Har mest brug for test på om et emailadr er valid - altså om både @ og . er i feltet og så om et felt er udfyldt eller ej.

Har forøvrigt også læst mig frem til herinde at Regex er tung at danse med for programmet, at hvis såfrem, skal man lave sin egen test istedet.

Tror bare jeg bruger en exception, hvor jeg beskriver, hvad felterne skal indeholde istedet.

Men tak for dit forsøg - smid et svar og du får pointsene

simsen :-)
Avatar billede nielle Nybegynder
25. juni 2006 - 21:42 #3
Regex er nu rimeligt effetivt - men hvis du skal lave en 1.000.000 valideringer lige efter hinanden, kan det selvfølgelig godt svare sig at kigge efter noget mere effektivt. Hvis det bare er til valideering af et enkelt felt, så er det vildt overkill at begynde at kede efter noget andet.

Ja, mit foreslag tester på om det er et heltal. Det var jo det første du spurgte om.

Men du kan da godt få den for email:

        private void textBox2_Validating(object sender, CancelEventArgs e)
        {
            TextBox tb = sender as TextBox;

            Regex validator = new Regex(@"^[a-z0-9._%-]+@[a-z0-9.-]+\.[a-z]{2,6}$", RegexOptions.IgnoreCase);
            if (!validator.Match(tb.Text).Success)
            {
                MessageBox.Show("Feltet skal indeholde en email!");
                e.Cancel = true;
            }
        }
Avatar billede simsen Mester
25. juni 2006 - 22:39 #4
Jeg har 5 felter på en form, jeg skal teste på....

Hvor kan jeg læse, hvordan jeg skal forstå selve udtrykket. Så jeg kan teste på de andre ting, jeg ønsker?`

altså din tekst i: new Regex(@"^\d*$");

mvh
simsen

Og husk at lægge et svar :-)
Avatar billede nielle Nybegynder
25. juni 2006 - 22:58 #5
Et godt sted at læse om regulære udtryk er denne side:

http://www.regularexpressions.info/

Derudover er du selvfølgelig velkommen til at spørge her. Regulære udtryk er et rigtigt stærkt værktøj og det kan bestemt betale sig at bruge noget tid til at forstå dem - om ikke andet så i grove træk. :^)


PS: Løsningen på dit sidste spørgsmål kræver dog ikke regulære tudtruk:

        private void textBox3_Validating(object sender, CancelEventArgs e)
        {
            TextBox tb = sender as TextBox;

            if (tb.Text.Trim() == "")
            {
                MessageBox.Show("Feltet må ikke være tomt!");
                e.Cancel = true;
            }
        }
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester