22. december 2006 - 23:42Der 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; }
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
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!
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); } } }
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); } } } } }
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.