C# Crea una casella di testo che accetta solo numeri

Minahil Noor 16 febbraio 2024
  1. Crea una Textbox che accetti solo numeri usando la classe KeyPressEventArgs in C#
  2. Crea una Textbox che accetti solo numeri utilizzando il metodo Regex.IsMatch() in C#
  3. Crea una Textbox che accetti solo numeri utilizzando il metodo NumericUpDown
C# Crea una casella di testo che accetta solo numeri

Durante la creazione di Windows Forms, alcuni campi di testo richiedono solo un valore numerico. Ad esempio, se vogliamo ottenere i numeri di telefono dagli utenti, dovremo limitare la nostra casella di testo solo a valori numerici.

In questo articolo ci concentreremo sui metodi che creano una textbox che accetta solo numeri.

Crea una Textbox che accetti solo numeri usando la classe KeyPressEventArgs in C#

KeyPressEventArgs è una classe C# che specifica il carattere immesso quando un utente preme un tasto. La sua proprietà KeyChar restituisce il carattere digitato dall’utente. Qui abbiamo utilizzato l’evento KeyPress per limitare la nostra casella di testo solo a valori numerici.

Il codice chiave che esegue questa azione è il seguente:

!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && (e.KeyChar != '.');

Qui e è un oggetto KeyPressEventArgs che utilizza la proprietà KeyChar per recuperare la chiave inserita.

Codice di esempio:

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 WindowsFormsApplication1 {
  public partial class Form1 : Form {
    public Form1() {
      InitializeComponent();
    }
    private void textBox1_KeyPress(object sender, KeyPressEventArgs e) {
      if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && (e.KeyChar != '.')) {
        e.Handled = true;
      }

      // only allow one decimal point
      if ((e.KeyChar == '.') && ((sender as TextBox).Text.IndexOf('.') > -1)) {
        e.Handled = true;
      }
    }
  }
}

Produzione:

// only allows numeric values in the textbox

C# TextBox accetta solo numeri

Crea una Textbox che accetti solo numeri utilizzando il metodo Regex.IsMatch() in C#

In C# possiamo usare espressioni regolari per controllare vari modelli. Un’espressione regolare è un modello specifico per eseguire un’azione specifica. RegularExpressions è una classe C# che contiene la definizione del metodo Regex.IsMatch(). In C#, abbiamo espressioni regolari ^[0-9]+$ e ^\d+$ per verificare se una stringa è un numero.

La sintassi corretta per utilizzare questo metodo è la seguente:

Regex.IsMatch(StringName, @"Expression");

Codice di esempio:

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 WindowsFormsApplication1 {
  public partial class Form1 : Form {
    public Form1() {
      InitializeComponent();
    }
    private void textBox1_TextChanged(object sender, EventArgs e) {
      if (System.Text.RegularExpressions.Regex.IsMatch(textBox1.Text, "  ^ [0-9]")) {
        textBox1.Text = "";
      }
    }
  }
}

Produzione:

// A textbox created that only accepts numbers.

C# TextBox accetta solo numeri

Crea una Textbox che accetti solo numeri utilizzando il metodo NumericUpDown

NumericUpDown fornisce all’utente un’interfaccia per inserire un valore numerico usando i pulsanti su e giù forniti con la textbox. Puoi semplicemente trascinare e rilasciare un NumericUpDown dalla Casella degli strumenti per creare una textbox che accetta solo numeri.

Puoi anche creare dinamicamente un oggetto NumericUpDown. Il codice per generare un NumericUpDown è il seguente:

private System.Windows.Forms.NumericUpDown numericUpDown;
this.numericUpDown = new System.Windows.Forms.NumericUpDown();

Ha diverse proprietà che puoi modificare aprendo le Finestre delle proprietà.

Produzione:

C# TextBox accetta solo numeri Numeric Up Down