Textfeld auf Datentyp beschränken



  • Hallo,

    ich habe mir eine Windows-Forms gebastelt mit mehreren Textfeldern. Nun möchter ich festlegen, dass man in die Textfeldern nur Zahlen eigeben darf. In VS 6 ging das über die Eigenschaften. Wie mache ich das hier??

    Vielen Dank für die Hilfe!



  • In der Framework Version 2.0 gibt es dafür die MaskedTextBox.



  • Sorry, hätte sagen sollen, dass ich das Framwework 1.1 benutze. Was gibt's denn da?



  • Servus,

    ich glaube da bleiben dir nicht viele Möglichkeiten übrig. Du könntest z.B. das KeyPressed Event abfangen.

    Bsp.:

    private void OnTextBoxKeyPressed(object sender, System.Windows.Forms.KeyPressEventArgs e)
    {
    	if (e.KeyChar != 8)
    	{
    		if (!char.IsNumber(e.KeyChar))
    		{
    			MessageBoxOptions options = (MessageBoxOptions)0;
    
    			MessageBox.Show("Dieses Feld erlaubt nur numerische Werte als Eingabe!", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error, 
    				MessageBoxDefaultButton.Button2, options);
    
    			e.Handled = true;
    		}
    	}
    }
    

    KeyChar 8 ist BackSpace. Damit man den Rotz auch wieder löschen kann, ohne das eine Fehlermeldung aufpoppt.

    mfg
    Hellsgore



  • Danke für den Tipp. Habe es so ähnlich gemacht. Fange einfach die System::FormatException und gebe dann eine MessageBox aus.



  • @Hellsgore
    Einfügen mittels Copy and Paste ( per Maus und ContextMenü ) ist so immernoch möglich.



  • Uhh....
    da haste recht... auf die idee bin ich ja noch garnicht gekommen.

    Hast du einen lukrativeren Vorschlag?

    EDIT:

    Ahh Moment.... Man kann aber das TextChanged Event abfangen und überprüfen ob sich der ganze Text in einen Int/etc. pappen lässt. Das wäre auch noch ne Möglickeit..


Anmelden zum Antworten