tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
6
ZUGRIFFE
4137
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    LissiOne LissiOne ist offline Mitglied
    Registriert seit
    Oct 2004
    Beiträge
    19
    Hallo zusammen,

    ich will, dass man in eine Combobox nur Zahlen eingeben kann.
    Mit den beiden folgenden Methoden funktioniert es nicht.
    Methode 1: (static nur weil es aus einer helper klasse ohne instanz kommt)
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    
            // ob ein nicht numerisches Zeichen eingegeben wurde
            static bool nonNumberEntered = false;
     
            // Keydown_event um rauszufinden, welche Taste gedrückt wurde
            public static void numbersOnlyCB_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
            {
                nonNumberEntered = false;
     
                //Zahl (oberer Teil des Keyboards)
                if (e.KeyCode < Keys.D0 || e.KeyCode > Keys.D9)
                {
                    //Zahl aus "Num" Bereich
                    if (e.KeyCode < Keys.NumPad0 || e.KeyCode > Keys.NumPad9)
                    {
                        if(e.KeyCode != Keys.Back)
                        {
                            if(e.KeyCode !=Keys.Delete)
                            {
                                //eine nicht erlaubte Taste wurde gedrückt
                                nonNumberEntered = true;
                            }
                        }
                    }
                    
                }
                else if(e.Shift)
                {
                    nonNumberEntered = true;
                }
            }
     
     
            //Event nach KeyDown Event, verwendet zum blocken der Eingabe eines unerlaubten Zeichens 
            public static void numbersOnlyCB_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
            {
                if (nonNumberEntered == true)
                {
                    //das Zeichen kann nicht eingegeben werden
                    e.Handled = true;
                }
            }

    Methode 2:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    // KeyPress Event der Textbox
            public static void numbersOnly_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
            {
                if(!IsValidNumber(e.KeyChar.ToString()))
                    e.Handled = true;
            }
     
            private static bool IsValidNumber(string s)
            {
                string[] arr = new string[]{"1","2","3","4","5","6","7","8","9"};
     
                for(int i = 0; i < arr.Length; i++)
                {
                    if(arr[i] == s.ToLower())
                    {
                        return true;
                    }
                }
                return false;
            }

    Beides funktioniert bei Textboxes einwandfrei,
    danke für eure Hilfe!
     

  2. #2
    Avatar von Christian Kusmanow
    Christian Kusmanow Christian Kusmanow ist offline Mitglied Diamant
    Registriert seit
    Aug 2004
    Ort
    Aachen (NRW)
    Beiträge
    2.208
    Blog-Einträge
    15
    Oh mein Gott!

    Alle was Du brauchst ist

    Code :
    1
    
    ComboBox.Validating
    und
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    regex = new System.Text.RegularExpressions.Regex( "([0-9])" );
    match = regex.Match( ComboBox.Text.Substring(ComboBox.Text.Length -1, 1 ));
     
        if ( !match.Success ){
            MessageBox.Show(
                "Es dürfen keine Zahlen eigegeben werden!",
                "Ungültiges Zeichen!",
                MessageBoxButtons.OK, MessageBoxIcon.Information);
     
            ComboBox.Text = ComboBox.Text.Substring(0,ComboBox.Text.Length -1);
            ComboBox.SelectionStart = ComboBox.Text.Length;
            ComboBox.Focus();

    MFG cosmo
     
    MfG,
    Christian

    Wer sein Problem definiert, hat es schon halb gelöst!

    Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.

    The Code Project! - C# Programming | C# / VB.NET Pendants

    Regeln + Netiquette

    Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
    und vor allem nicht auf das, was euch die IHK dazu erzählt!
    Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...

  3. #3
    LissiOne LissiOne ist offline Mitglied
    Registriert seit
    Oct 2004
    Beiträge
    19
    Vielen Dank erstmal
    Muss ich dann an die ComboBox einen CancelEventHandler anhängen? Oder was meinst du mit ComboBox.Validating?
     

  4. #4
    Avatar von Christian Kusmanow
    Christian Kusmanow Christian Kusmanow ist offline Mitglied Diamant
    Registriert seit
    Aug 2004
    Ort
    Aachen (NRW)
    Beiträge
    2.208
    Blog-Einträge
    15
    Validating ist ein Event welches ausgelöst wird wenn sich der Text in deiner ComboBox verändert hat.
    Code :
    1
    
    ComboBox.Validating += new CancelEventHandler(ComboBox_Validating);

    Das steht übrigens alles in der MSDN.

    MFG cosmo
     
    MfG,
    Christian

    Wer sein Problem definiert, hat es schon halb gelöst!

    Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.

    The Code Project! - C# Programming | C# / VB.NET Pendants

    Regeln + Netiquette

    Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
    und vor allem nicht auf das, was euch die IHK dazu erzählt!
    Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...

  5. #5
    LissiOne LissiOne ist offline Mitglied
    Registriert seit
    Oct 2004
    Beiträge
    19
    Danke! Habs auch schon gefunden
     

  6. #6
    Fox33299729 Tutorials.de Gastzugang
    Hmm der Code ist doch etwas buggy...

    klick mal rein in das Feld und danach wieder raus, ohne etwas einzugeben... rums...

    Was ich bei dieser Lösung auch nicht optimal finde ist, dass nicht direkt nach der Eingabe geprüft wird
     

  7. #7
    Avatar von Shakie
    Shakie Shakie ist offline Mitglied Diamant
    Registriert seit
    May 2004
    Ort
    Europa
    Beiträge
    2.048
     
    hihi = -h²

Ähnliche Themen

  1. Antworten: 10
    Letzter Beitrag: 06.03.10, 20:51
  2. Nur Zahlen in Combobox schreiben
    Von GangXtaBoii im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 01.12.08, 06:39
  3. Access, ComboBox gemäß ComboBox füllen?
    Von pglw im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 17.09.06, 22:08
  4. Nur Zahlen eingeben dürfen...
    Von Mailyn im Forum Visual Basic 6.0
    Antworten: 1
    Letzter Beitrag: 18.06.06, 18:35
  5. Antworten: 6
    Letzter Beitrag: 16.10.04, 22:06