Avatar billede lasserasch Juniormester
22. december 2006 - 23:42 Der er 6 kommentarer og
1 løsning

validering af tekstbox data

Hejsa.

Jeg vil gerne lave en funktion som kan validere om hvor vidt der er tastet data ind i alle tekstbokse på en form.

Jeg har tænkt over det et stykke tid, og nu er jeg blevet så træt af at skrive :

if (tb_navn.text == "")
{
Messagebox.show("Indtast venligst tekst i navnefeltet");
return;
}

osv...

Dette gør jeg pt. hvor hver eneste textbox, jeg har på en form. Det er besværligt, og giver meget kode, hvis programmet bare er en smule stort.

Så derfor tænkte jeg på om det på en eller anden snu måde kan lade sig gøre at finde alle textboxes på en form, og kalde en funktion, for hver textbox, som gør dette i stedet for?

Altså en funktion ala denne :

public Boolean validate_textbox(TextBox TB)
        {
            if (TB.Text == "")
            Messabox.show("Indtast venligst tekst i " + TB.Tag + " først.");
                return false;
            else
                return true;
        }



Nogen forslag???


/Lasse
Avatar billede keysersoze Ekspert
23. december 2006 - 00:12 #1
Avatar billede lasserasch Juniormester
23. december 2006 - 00:31 #2
Hejsa.

Nej desværre... Jeg skriver i C#, men jeg fandt faktisk selv løsningen! Stædighed er nogen gange godt, hvis man har tid til at prøve alle muligheder selv!

Jeg fik bakset mig frem til denne funktion, som umiddelbart virker godt for mig :

public void validate_textbox(Form F1)
        {
            foreach (Control CT in F1.Controls)
            {
                TextBox TB = CT as TextBox;

                if (TB != null && TB.Text == "")
                {
                    MessageBox.Show("Indtast venligst data i " + TB.Tag + " feltet.", "Indtastningsfejl");
                }
            }
        }

Her tjekker den godt nok alle controls man har på en form, men hvis det ikke er en textbox, så er værdien null har jeg fundet ud af, og så går resten jo af sig selv!

Men jeg takker for indsatsen alligevel! Hvis du smider et svar, så får du ½ points, for din indsats!


/Lasse
Avatar billede bulgroz Nybegynder
23. december 2006 - 08:16 #3
Koden fra linket som keysersone har bidraget med er også C# og beskriver en mere kompleks, men også mere rigtig måde at gribe validering an på. Men jeg formoder at dette er at skyde over målet med din løsning.

Et par kommentarer til din egen indfaldsvinkel...
Undgå at lave parametre som "rummer" mere end ønsket. F.eks. bør du ikke videregive hele formen når det kun er Controls du har behov for. Din kode kan herefter se således ud...

  private void ValidateTextBoxes(ICollection collection)
        {
            foreach (Control control in collection)
            {
                if (control is TextBox && string.IsNullOrEmpty(control.Text))
                {
                    MessageBox.Show(string.Format(CultureInfo.CurrentUICulture, "Indtast venligst data i '{0}' feltet.", control.Tag), "Indtastningsfejl", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }
        }











  private void ValidateTextBoxes(ICollection collection)
        {
            foreach (Control control in collection)
            {
                if (control is TextBox && string.IsNullOrEmpty(control.Text))
                {
                    MessageBox.Show(string.Format(CultureInfo.CurrentUICulture, "Indtast venligst data i '{0}' feltet.", control.Tag), "Indtastningsfejl", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }
        }
Avatar billede bulgroz Nybegynder
23. december 2006 - 08:24 #4
Hmmmm.... der er vist en julenisse på spil ;-)
Avatar billede lasserasch Juniormester
27. december 2006 - 07:51 #5
ok. Kunne ikke lige få det med icollection til at virke i går aftes, men må jeg prøve en anden dag!

/Lasse
Avatar billede bulgroz Nybegynder
27. december 2006 - 08:42 #6
using System.Collections;
Avatar billede bulgroz Nybegynder
27. december 2006 - 09:38 #7
Her er komplet eksempel:

namespace ValidateExample
{
    using System;
    using System.Windows.Forms;
    using System.Collections;
    using System.Globalization;

    public partial class Form1 : Form
    {
        public Form1()
        {
            this.InitializeComponent();
           
            this.button1.Click += new System.EventHandler(this.OnButtonClick);
        }

        private void OnButtonClick(object sender, EventArgs e)
        {
            this.ValidateTextBoxes(this.Controls);
        }

        private void ValidateTextBoxes(ICollection collection)
        {
            foreach (Control control in collection)
            {
                if (control is TextBox && string.IsNullOrEmpty(control.Text))
                {
                    MessageBox.Show(string.Format(CultureInfo.CurrentUICulture, "Indtast venligst data i '{0}' feltet.", control.Tag), "Indtastningsfejl", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }
        }
    }
}
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