2012-06-27 10 views
7

मैं डेटाग्रिड व्यू में प्रदर्शित और कब्जे वाले दशमलव स्थानों को प्रारूपित करना चाहता हूं, मेरे पास न्यूनतम दशमलव स्थान और दशमलव स्थानों की अधिकतम संख्या है। उदाहरण के लिए:डेटाग्रिड व्यू में अधिकतम और न्यूनतम के साथ संख्या दशमलव वाले कॉलम को कैसे प्रारूपित करें?

If caught, "120.0" display "120.00" 
If caught "120.01" display "120.01" 
If caught "120,123" display "120,123" 
If caught "120.1234" display "120.1234" 
If caught "120.12348" display "120.1235" (round) 

DataGridView स्तंभ "txtcDecimal" में संपत्ति (डिजाइनर से) है

txtcDecimal.DefaultCellStyle.Format = "N2"; 

txtcDecimal.DefaultCellStyle.Format = "0.00##"; // IS ANSWER. I do not work for an event that interfered 

मुखौटा "0.00 ##" के रूप में काम "n2" केवल 2 दशमलव मिल जो दो दशमलव स्थानों पर सही गोल करता है लेकिन मुझे जो चाहिए वह पसंद नहीं है (जैसा कि मैंने उदाहरण में दिखाया है)

मैं कई संसाधनों का उपभोग किए बिना इसे सरल तरीके से कैसे कर सकता हूं?

धन्यवाद harlam357 & टॉम Garske

+0

अपने तीसरे उदाहरण में अगर आपने जानबूझकर (,) एक अल्पविराम निर्दिष्ट किया एक निरूपित करने के लिए पूरी संख्या या वह एक टाइपो था? – harlam357

+0

कृपया देखें कि मैंने यह दिखाने के लिए अपना उत्तर अपडेट किया कि इसे फॉर्म में कैसे कार्यान्वित किया गया था। यह देखने के लिए खुशी हुई कि आप इसे काम करने के लिए मिला! – Tom

उत्तर

14

फ़ॉर्मेट करने के लिए 2 और स्थानों के बीच 4 दशमलव आप एक कस्टम प्रारूप स्ट्रिंग का उपयोग कर सकते हैं।

txtcDecimal.DefaultCellStyle.Format = "0.00##" 

थोड़ा आगे जाने के लिए ...

public partial class Form1 
{ 
    public Form1() 
    { 
     InitializeComponent(); 

     var list = new List<Data>(); 
     list.Add(new Data { Prop1 = 1, Prop2 = 1.2 }); 
     list.Add(new Data { Prop1 = 2, Prop2 = 1.234567 }); 

     dataGridView1.Columns.Add("Prop1", "Prop1"); 
     dataGridView1.Columns["Prop1"].DataPropertyName = "Prop1"; 
     dataGridView1.Columns.Add("Prop2", "Prop2"); 
     dataGridView1.Columns["Prop2"].DataPropertyName = "Prop2"; 
     dataGridView1.Columns["Prop2"].DefaultCellStyle.Format = "0.00##"; 
     dataGridView1.DataSource = list; 
    } 

    class Data 
    { 
     public int Prop1 { get; set; } 
     public double Prop2 { get; set; } 
    } 
} 
+0

यह काम नहीं करता है, मेरा प्रश्न अपडेट करें – ch2o

+0

धन्यवाद मेरी त्रुटि =) – ch2o

2

एक कस्टम फ़ॉर्मेटर बनाएँ।

public class MyFormatProvider : IFormatProvider, ICustomFormatter 
{ 
    public object GetFormat(Type formatType) 
    { 
    if (formatType == typeof(ICustomFormatter)) 
     return this; 
    else 
     return null; 
    } 

    public string Format(string format, object arg, IFormatProvider formatProvider) 
    { 
    // Check whether this is an appropriate callback    
    if (!this.Equals(formatProvider)) 
     return null; 

    //if argument/ value is null we return empty string 
    if (arg == null) 
     return null; 

    string resultString = arg.ToString(); 

    //transform resultString any way you want (could do operations based on given format parameter) 

    //return the resultant string 
    return resultString; 
    } 
} 

स्रोत:How to custom format data in datagridview during databinding

3

फ़ॉर्मेट करने के लिए 2 और स्थानों के बीच 4 दशमलव आप एक कस्टम प्रारूप स्ट्रिंग का उपयोग कर सकते हैं। (Harlam357 द्वारा प्रदान के रूप में)

txtcDecimal.DefaultCellStyle.Format = "0.00##" 

मैं सरल सांत्वना एप्लिकेशन के पास निम्न के साथ सत्यापित किया:

 double myDouble = 13.1; 
     double myDouble2 = 13.12345; 
     Console.WriteLine(myDouble.ToString("0.00##")); 
     Console.WriteLine(myDouble2.ToString("0.00##")); 
     Console.Read(); 

उत्पादन किया गया था:

13.10 
13.1235 

Harlam का जवाब स्पष्ट रूप से सही है ....

अद्यतन: इस प्रकार मैं लागू करता हूं रूपों में यह ented:

public Form1() 
    { 
     InitializeComponent(); 

     DataTable dt = new DataTable(); 
     dt.Columns.Add("a"); 
     dt.Rows.Add(123.4); 
     dt.Rows.Add(123.45); 
     dt.Rows.Add(123.456); 
     dt.Rows.Add(123.4567); 
     dt.Rows.Add(123.45678); 
     this.dataGridView1.DataSource = dt; 
     this.dataGridView1.CellFormatting += new DataGridViewCellFormattingEventHandler(dataGridView1_CellFormatting); 
    } 

    void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) 
    { 
     if (e.ColumnIndex == 0 && e.RowIndex != this.dataGridView1.NewRowIndex) 
     { 
      double d = double.Parse(e.Value.ToString()); 
      e.Value = d.ToString("0.00##"); 
     } 
    } 

स्रोत:http://social.msdn.microsoft.com/forums/en-US/winformsdatacontrols/thread/95e7e7ef-2e71-412f-abe5-ffbee2c12c18/

उत्पादन:

Example Output from application

+0

कंसोल एप्लिकेशन में काम करता है लेकिन डेटाग्रिडव्यू कॉलम में काम नहीं करता है। मैं इस घटना में कोशिश कर रहा हूं _CellFormating – ch2o

+0

इस स्ट्रिंग का उपयोग करके डेटाग्रिडव्यू में यह आउटपुट या शो क्या करता है? "काम नहीं करता" स्पष्ट नहीं है। – Tom

+0

ठीक से काम नहीं कर रहा है, मुखौटा "0.00 ##" काम करता है "एन 2" केवल 2 दशमलव प्राप्त करता है – ch2o

संबंधित मुद्दे