C# :: Aufgabe #8

12 Lösungen Lösungen öffentlich

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.

Lösungen:

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);
        }

        
    }
}
vote_ok
von wladi-g (1310 Punkte) - 05.06.2014 um 14:43 Uhr
Quellcode ausblenden C#-Code
using System;
using System.Windows.Forms;

namespace NurInt
{
    public partial class Form1 : Form
    {
        int a;

        public Form1()
        {
            InitializeComponent();
        }

        private void textBox1_KeyDown(object sender, KeyEventArgs e)
        {
            if(e.KeyCode == Keys.Enter)
                if (int.TryParse(textBox1.Text, out a))
                    MessageBox.Show(a.ToString());
        }
    }
}
vote_ok
von Neicul (120 Punkte) - 27.06.2014 um 15:01 Uhr
Viel kürzer wirds nicht

Quellcode ausblenden C#-Code
Regex rgx = new Regex(@"\D");

private void txt_TextChanged(object sender, EventArgs e)
{
	txt.Text = rgx.Replace(txt.Text, "");
}
1 Kommentar
2x
vote_ok
von thareck (430 Punkte) - 15.03.2015 um 15:21 Uhr
Quellcode ausblenden C#-Code
        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = !char.IsDigit(e.KeyChar) & !char.IsControl(e.KeyChar);
        }
vote_ok
von l1k3_m3 (240 Punkte) - 07.04.2015 um 01:30 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.Windows.Forms;

namespace boxUebung
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
                if (!char.IsNumber(e.KeyChar))
                {
                    e.Handled = true;
                }
                if (e.KeyChar == '+')
                {
                    textBox1.SelectedText = "+";
                    e.Handled = true;
                }
                if (e.KeyChar == '-')
                {
                    textBox1.SelectedText = "-";
                    e.Handled = true;
                }
                /*if(e.KeyChar != (char)Keys.Back)
                {
                    e.Handled = false;
                }*/
                if (e.KeyChar == (char)13)
                {
                    MessageBox.Show(textBox1.Text);
                }
                
        }

        private void textBox1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyData == (Keys.C | Keys.Control))
            {
                textBox1.Copy();
                e.Handled = true;
            }
            else if (e.KeyData == (Keys.V | Keys.Control))
            {
                textBox1.Paste();
                e.Handled = true;
            }
        }
    }
}
vote_ok
von Torbo (880 Punkte) - 15.05.2015 um 08:57 Uhr
Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Forms;
using MessageBox = System.Windows.Forms.MessageBox;

namespace IntBox
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow :Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
        private void text1_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)//Zum ausführen über der Entertaste
        {
            if (e.Key == Key.Return)
            {
                MessageBox.Show(text1.Text);
            }     
        }
        private void text1_TextChanged(object sender, TextChangedEventArgs e)//überprüft ob es sich um ein Int Wert handelt
        {
            try
            {
                UInt16 Variable = Convert.ToUInt16(text1.Text);
            }
            catch (FormatException)
            {
                text1.Clear();
            }
            
        }    
    }
}
vote_ok
von roadman1991 (360 Punkte) - 15.03.2016 um 12:44 Uhr
Quellcode ausblenden C#-Code
private void textBox1_KeyPress(object sender, KeyPressEventArgs e) {
            e.Handled = !char.IsNumber(e.KeyChar) & !char.IsControl(e.KeyChar);
        }
vote_ok
von Shirkova (190 Punkte) - 03.07.2016 um 21:27 Uhr
Kurz und einfach.

Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WpfApplication3
{
    /// <summary>
    /// Interaktionslogik für MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        Regex reg = new Regex("\\D");

        public MainWindow()
        {
            InitializeComponent();
           
        }

        private void textBox_TextChanged(object sender, TextChangedEventArgs e)
        {
            textBox.Text = reg.Replace(textBox.Text, "");
            //Cursor wieder am Ende des Textfeldes platzieren.
            textBox.Select(textBox.Text.Length, 0);
        }
    }
}

vote_ok
von grinchyy (200 Punkte) - 07.03.2017 um 17:07 Uhr
Quellcode ausblenden C#-Code
namespace training_aufgabe8
{
    public partial class frmMain : Form
    {
        public frmMain()
        {
            InitializeComponent();
        }

        private void tbxEingabe_KeyPress(object sender, KeyPressEventArgs e)
        {
            char ch = e.KeyChar;

            if (!Char.IsDigit(ch) && ch != 8 && ch != 46 && ch != 189 && ch != 13 && ch != 109 && !Char.IsControl(ch))
            {
                e.Handled = true;
                MessageBox.Show("Bitte gebe nur Zahlen ein!");
            }
            if (ch == 13)
            {
                MessageBox.Show(Convert.ToString(tbxEingabe.Text));
            }
        }
    }
}
vote_ok
von kjaenke (1140 Punkte) - 03.08.2017 um 16:24 Uhr
Quellcode ausblenden C#-Code

 using System;
    using System.Windows.Forms;

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            if (!int.TryParse(textBox1.Text, out int _))
            {
                try
                {
                    textBox1.Text = textBox1.Text.Substring(0, textBox1.Text.Length - 1);
                    textBox1.SelectionStart = textBox1.Text.Length;
                }
                catch 
                {
                    // Ignored
                }
            }
        }
    }

1x
vote_ok
von stcalvin (970 Punkte) - 21.12.2017 um 12:14 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;

namespace TrainYourProgrammer8_neu
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = !char.IsDigit(e.KeyChar) && !char.IsControl(e.KeyChar);


        }

        private void textBox1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyData == Keys.Enter)
            {
                MessageBox.Show(textBox1.Text);
            }
        }
    }
}
vote_ok
von stbehl (1640 Punkte) - 03.01.2018 um 12:36 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;

namespace TrainYourProgrammer8
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            
        }

        private void textBox1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Return)
            {
                MessageBox.Show(String.Format("Sie haben {0} eingegeben.", textBox1.Text));
            }
        }

        private void nurInt(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar != '\b' && e.KeyChar != '-')
            {
                if (Char.IsControl((e.KeyChar)))
                {
                }
                else if (!Char.IsDigit(e.KeyChar))
                {
                    e.Handled = true;
                }
            }
        }
    }
}