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
2096599

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.