formattazione di un certo numero mentre l'utente sta digitando in opere generali molto male. Dovresti usare un MaskedTextBox per questo. Un sacco di codice su Internet che mostra come filtrare KeyPress in modo da poter inserire solo le cifre. La maggior parte di essa viene banalmente sconfitta usando il comando Incolla.
Il modo corretto è di trattare l'utente capace di abilità di base come digitare un numero e ricordarle gentilmente che ha sbagliato. L'evento Validating è fatto per quello. Qual è anche il momento perfetto per formattare il numero. Aggiungi una nuova classe al tuo progetto e incolla questo codice:
using System;
using System.ComponentModel;
using System.Windows.Forms;
public class NumberBox : TextBox {
public NumberBox() {
Fraction = 2;
}
public ErrorProvider ErrorProvider { get; set; }
[DefaultValue(2)]
public int Fraction { get; set; }
public event EventHandler ValueChanged;
public decimal Value {
get { return this.value; }
set {
if (value != this.value) {
this.value = value;
this.Text = Value.ToString(string.Format("N{0}", Fraction));
var handler = ValueChanged;
if (handler != null) ValueChanged(this, EventArgs.Empty);
}
}
}
protected override void OnValidating(CancelEventArgs e) {
if (this.Text.Length > 0 && !e.Cancel) {
decimal entry;
if (decimal.TryParse(this.Text, out entry)) {
if (ErrorProvider != null) ErrorProvider.SetError(this, "");
Value = entry;
}
else {
if (ErrorProvider != null) ErrorProvider.SetError(this, "Please enter a valid number");
this.SelectAll();
e.Cancel = true;
}
}
base.OnValidating(e);
}
protected override void OnEnter(EventArgs e) {
this.SelectAll();
base.OnEnter(e);
}
private decimal value;
}
Compila. Rilasciare il nuovo controllo NumberBox dalla parte superiore della casella degli strumenti sul modulo. Lasciare anche un ErrorProvider sul modulo in modo che gli errori di battitura possano essere riportati in modo modesto, impostare la proprietà ErrorProvider del nuovo controllo. Modificare facoltativamente la proprietà Fraction. È possibile sottoscrivere l'evento ValueChanged per sapere quando il valore è stato modificato.
fonte
2013-03-04 17:50:58
caso questo '1,00,000.00' essere' 100,000.00' forse? – Neolisk