एक नंबर का प्रारूपण जबकि उपयोगकर्ता सामान्य कार्यों में लिख रहा है बहुत खराब। इसके लिए आपको एक मुखौटा टेक्स्टबॉक्स का उपयोग करना चाहिए। इंटरनेट पर कोड के बहुत सारे जो दिखाता है कि कुंजीपटल फ़िल्टर कैसे करें ताकि केवल अंक दर्ज किए जा सकें। अधिकांश इसे पेस्ट कमांड का उपयोग करके तुच्छ रूप से पराजित किया जाता है।
सौहार्दपूर्ण तरीका उपयोगकर्ता को बुनियादी कौशल में सक्षम होने का इलाज करना है जैसे कि संख्या टाइप करना और धीरे-धीरे उसे याद दिलाना कि उसे गलत लगता है। इसके लिए मान्य घटना बनाई गई है। संख्या को प्रारूपित करने का एकदम सही समय भी है। अपनी परियोजना में एक नई कक्षा जोड़ें और इस कोड को पेस्ट करें:
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;
}
संकलन। टूलबॉक्स के शीर्ष से अपने फॉर्म पर नया नंबरबॉक्स नियंत्रण ड्रॉप करें। फॉर्म पर एक त्रुटिप्रदाता भी छोड़ दें ताकि टाइपिंग गलतियों को मामूली तरीके से रिपोर्ट किया जा सके, नए नियंत्रण की त्रुटिप्रदाता संपत्ति सेट करें। वैकल्पिक रूप से फ्रैक्शन प्रॉपर्टी को संशोधित करें। जब मूल्य संशोधित किया गया था, तो आप यह जानने के लिए ValueChanged ईवेंट की सदस्यता ले सकते हैं।
स्रोत
2013-03-04 17:50:58
इस '' 1,00,000.00' होना चाहिए 100,000.00' शायद? – Neolisk