1. Du skal gå ind og tjekke, ved en indtastning det er et tal. Det kan du evt gøre med:
- public Form1()
- {
- InitializeComponent();
-
- textBox1.KeyPress +=new KeyPressEventHandler(CheckText);
- }
-
- private void CheckText(object sender, KeyPressEventArgs e)
- {
- e.Handled = true; //For at override standard handling
- char c = e.KeyChar;
- bool ok = false;
- TextBox box = (TextBox) sender;
-
- try
- {
- Convert.ToInt32("" + c); //""+c for at lave char'en om til en streng, da vi ellers ender med int uanset indtastning
- ok = true;
- }
- catch {
- if (c == ',' && !box.Text.Contains(c)) //Hvis det er en et komma, og der ikke er nogen
- ok = true;
- }
-
- if (ok)
- {
- box.Text += c;
- box.SelectionStart = box.Text.Length; //Flytte caret til enden.
- }
- }
2: Du kan gøre lige hvad du vil... ingen siger at du SKAL bruge Messagebox.Show(); I nedenstående har jeg lavet en fået en eventhandler til at farve en textbox rød, hvis den har en ugyldig værdi:
- public Form1()
- {
- InitializeComponent();
-
- button1.Click += new EventHandler(Clicked);
- }
-
- private void Clicked(object sender, EventArgs e)
- {
- TextBox[] boxes = new TextBox[] { textBox1, textBox2, textBox3 }; //Array med Textboxene hvis der er flere
- int i = 0; //Tæller så catch{} ved hvad den skal arbejde med
- try
- {
- while (i < boxes.Length) //Kontroller hver box
- Convert.ToDouble(boxes[i++].Text);
-
- //Gør hvad der ellers skulle ske her, bliver aldrig kaldt hvis der opstår fejl
- }
- catch
- {
- boxes[i].BackColor = Color.Red;
- }
- }
3: Ja, dét er nemt nok:
- public Form1()
- {
- InitializeComponent();
-
- textBox1.Leave += new EventHandler(FormaterText);
- }
-
-
-
- private void FormaterText(object sender, EventArgs e)
- {
- try
- {
- TextBox box = (TextBox)sender;
- box.Text = string.Format("{0:N2}", Convert.ToDouble(box.Text)); //N2 fortæller at det skal formateres XXX.XXX,XX, hvor 2 er antallet er tegn efter decimal tegn
- }
- catch { }
- }
Med udgangspunkt i de tre ovenstående blokke, så er eks. 2 dog overflødigt hvis de to andre er i brug. Desuden så er det første eksempel kun brugbare de steder (f.eks i Danmark), hvor vi bruger komma som decimaltegn.