Domanda C# Verifica se la TextBox è 0.

Pacifico437

Utente Gold
27 Aprile 2012
166
78
6
200
Buongiorno,

nelle TextBox con evento KeyPress sono inserite valori numerici e decimali (con la virgola per es: 2.562,96).

In alcune TextBox vi è "0,00" e gradirei inserire una condizione di verifica.

Ho provato senza successo con:

Codice:
if (e.KeyChar == (char)Keys.Enter)
{
  if (TextBox4.Text.Length == 0.00)
  {
     MessageBox.Show("Il campo è vuoto!");
     TextBox1.Focus();
     return;
   }
}
e non viene preso in considerazione la condizione.

Fiducioso di una gradita soluzione, cordialmente saluto.
Domenico.
 
La property Length serve a sapere il numero di caratteri: con "0,00" Length sarà 4. Tu invece vuoi sapere se la textbox contiene un valore 0 ma che può essere rappresentato in molti modi: 0, 00, 0.0, 0.00, 0,0...
Per fare questo devi convertire la stringa in Text in double e poi verificare che sia 0:

C#:
    private static double GetTextBoxDouble(TextBox t, double _default = 0.00)
    {
        var text = t.Text.Replace(',', '.');
        var b = double.TryParse(text, NumberStyles.Any, CultureInfo.InvariantCulture, out var val);
        return (b ? val : _default);
    }

Esempio d'uso:

C#:
double num = GetTextBoxDouble(TextBox4);
if (num == 0.00)
{
    // ...
}

Ricorda di aggiungere in cima using System.Globalization;
 
Gent.mo JunkCorder,

ringrazio della tempestività e disponibilità.

Il codice funziona perfettamente l'unico problema che potrebbe
essere trascurabile che la TextBox non viene azzerata.
Riporto il codice per una eventuale modifica.
Codice:
private void TextBox2_KeyPress(object sender, KeyPressEventArgs e)
{
    if (e.KeyChar == (char)Keys.Enter)
    {
      TextBox3.Focus();
    }
    else
    {
       double num = GetTextBoxDouble(TextBox1);
       if (num == 0.00)
       {
          //TextBox2.Text = ""; TextBox2.Clear();
          MessageBox.Show("Il campo non ha il numero");   
          //TextBox2.Text = ""; TextBox2.Focus();
       }
       //TextBox2.Clear(); TextBox2.Text = "";
     }
       //TextBox2.Clear(); TextBox2.Text = "";
}
Nell'augurare buon lavoro, cordialmente saluto.

Domenico.