C# :: Aufgabe #8 :: Lösung #1

12 Lösungen Lösungen öffentlich
#8

TextBox welche nur Integer zulässt

Anfänger - C# von Gustl - 15.08.2012 um 09:30 Uhr
Erstellen Sie eine Anwendung mit einer TextBox, welche nur Integer zulässt.
Also die Zahlen-Tasten 0-9, NumPad 0-9, Back, Delete, Tab, Left, Down, Right, Up, OemMinus, Enter, Subtract und Strg-C,X,V.
Nach drücken von Enter soll eine MessageBox erscheinen die den Inhalt der TextBox ausgibt.
#1
vote_ok
von Isparia (690 Punkte) - 07.11.2012 um 22:00 Uhr
Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

//man hätte die Aufgabe auch über Reguläre ausdrücke mit hilfe der RegEx klasse 
//lösen können aber ich wollte es heute mal umständlich
namespace trainyourprogrammer_aufgabe8
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            
        }
        
        private void textBox1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Return) 
            {
                MessageBox.Show(textBox1.Text);
            }
        }
        

        private void textBox1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
        {
            if (
                (e.KeyCode == Keys.Delete) ||
                (e.KeyCode == Keys.Down)  ||
                (e.KeyCode == Keys.Up)       ||
                (e.KeyCode == Keys.Left)     ||
                (e.KeyCode == Keys.Right)   ||
                (e.KeyCode == Keys.Back)
                )
            { }
            else
            {
                textBox1.Select(textBox1.Text.Length, 0);
            }
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            string test = textBox1.Text;
            string eingabe;
            long k;
            bool zahlVorhanden;
            int i;
            //überprüfen auf Anzahl der zeichen im string(Textbox1.Text.Length == test.Length)
            if (test.Length > 0)
            {
                //Wenn der String mehr als ein Zeichen hat wird das letzte Zeichen extrahiert
                eingabe = test.Substring(test.Length - 1);
            }
            else
            {
                //Wenn der String keine Zeichen mehr beinhaltet wird dieser als ein Zeichen 
                //und als eingegebener Wert genohmen. 
                eingabe = test;
            }
            switch (eingabe)
                    //welches Zeichen ist das letzte zeichen
            {
                case "1":
                    break;
                case "2":
                    break;
                case "3":
                    break;
                case "4":
                    break;
                case "5":
                    break;
                case "6":
                    break;
                case "7":
                    break;
                case "8":
                    break;
                case "9":
                    break;
                case "0":
                    break;
                case "-":
                    // ist das zuletzt eingegebene Zeichen ein Minuszeichen("-") wird der Wert ins negative gewandelt
                    // sollte der Wert welcher in der Textbox stehen schon negativ sein wird das Minus gelöscht 
                    // ein Integer kann ja nicht negativer als negativ sein alternativ könnte man
                    // den Wert wieder ins positive wandeln
                   
                    int j;
                    zahlVorhanden = Int32.TryParse(textBox1.Text.Substring(0,textBox1.Text.Length-1), out  j);
                    if (j> 0)
                    {
                        textBox1.Text = "-" + test;
                    }
                    else
                    { 
                        Letztes_Zeichen_Del(test);
                    }
                    break;
                default:
                    if (textBox1.Text.Length > 0)
                    {
                        Letztes_Zeichen_Del(test);
                    }
                    break;
            }
            // überprüfen ob der Wert im wertebereich eines Int32 liegt, wenn ja wird der Curser an die letze Stelle gesetzt
            // falls dies nicht der Fall ist wird geprüft ob es es sich um eine Zahl handelt welche im int64 bereich liegt also ein long Wert
            // ist dies der Fall so wird eine Messagebox geöffnet welche darauf hinweisst das der Wert über dem Wertebereich von Int32 liegt, 
            // des weiteren wird die zuletzt eingegebene Ziffer gelöscht. 
           
                if (Int32.TryParse(textBox1.Text, out i))
                {
                    textBox1.Select(textBox1.Text.Length, 0);
                }
                else
                {

                    if (Int64.TryParse(textBox1.Text, out k))
                    {
                        MessageBox.Show("Wertebereich von Int 32 überschritten\nDie größte Integer32 Variabele kann maximal " + Convert.ToString(Int32.MaxValue) + " sein\nDie zuletzt hinzugefügte Ziffer wird entfernt!");
                        textBox1.Text = textBox1.Text.Substring(0, textBox1.Text.Length - 1);
                    }
                     else//löschen des letzen zeichens bis da wieder eine zahl steht
                    {
                        Letztes_Zeichen_Del(textBox1.Text);
                    }
                }
                       
        }

        private void Letztes_Zeichen_Del(string test)
        {
            textBox1.Text = test.Substring(0, test.Length - 1);
        }

        
    }
}

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben