2009-07-22 14 views
1

私はWinForms DataGridViewに苦労しています。私は私が表示される要素として使用することを、クラスを持っている:バインドされていないデータソースのDataGridView列の整形

public class BorderFlowHistoryElement 
{ 
    public string nodeTitles { get; set; } 
    public double borderFlowRatio { get; set; } 
    ... 
} 

私は、これらの要素のリストを作成しました:

List<BorderFlowHistoryElement> clusterHistory 

thise要素のリストが含まれている、私の中に表示されるべきですDataGridView。

dataGridViewCluster.DataSource = clusterHistory; 

DataGridViewにリストが表示されました。今私は5桁を表示するdouble値を表示する列を書式化したいと思います。私はそれを試してみました:

しかし、これは列に影響しません。誰でも知っている、私はそれを正しく行うことができますか? さらに、私は、列の幅を最大のエントリに最適なサイズに調整したいと思います。事前に

おかげで、 フランク

+0

合計桁数または精度をお探しですか?あなたは精度を指定しているので、数字が1234でN5を使用した場合、1,234.00000が得られます。それはあなたが欲しいものですか? – joshlrogers

+0

私は精度を探しています。たとえば、3.1415672467234823499821は3.14157 – Aaginor

+0

になります。正常に動作します。 –

答えて

1

私はあなたが行っていると私は全く問題がなかったものを複製しています。あなたはあなたが実際にあなたが望む結果を得ることができることを確認するためにあなたのデータを検証しましたか?ここで

は、私はちょうどあなたの参照のために何をしたかである:

private void button1_Click(object sender, EventArgs e) 
    { 
     IList<BorderFlowHistoryElement> clusterHistory = FillClusterHistory(); 

     dataGridView1.DataSource = clusterHistory; 

     dataGridView1.Columns[1].DefaultCellStyle.Format = "n5"; 

     dataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells); 

    } 

    private static IList<BorderFlowHistoryElement> FillClusterHistory() 
    { 
     IList<BorderFlowHistoryElement> clusterHistory = new List<BorderFlowHistoryElement>(); 


     for(int i = 5000; i < 5020; i++) 
     { 
      BorderFlowHistoryElement element = new BorderFlowHistoryElement(); 

      element.nodeTitles = Guid.NewGuid().ToString(); 

      element.borderFlowRatio = i * 3.3.1415672467234823499821D; 

      clusterHistory.Add(element); 
     } 

     return clusterHistory; 
    } 
} 

public class BorderFlowHistoryElement 
{ 
    private string _NodeTitles; 
    private double _BorderFlowRatio; 

    public string nodeTitles 
    { 
     get { return _NodeTitles; } 
     set { _NodeTitles = value;} 
    } 

    public double borderFlowRatio 
    { 
     get { return _BorderFlowRatio; } 
     set { _BorderFlowRatio = value;} 
    } 
} 

私はそれが何らかの形で役立ちます願っています。あなたが見ることができるように、自動サイジングも行うことができます。

+0

それは私を大いに助けてくれました。それは、私のフォーメーティングコードが正しいことを示し、間違いは他の場所にある必要があることを示しました。そして、私はそのバグを見つけました:まず、VS-DesignerでColumnTemplatesを作成することで実験しました。それはうまくいきませんでしたが、私はそれらをすべて削除することができませんでした(これは問題ではないと思いました。私のListをDataSourceにバインドするときに上書きされたためです)。しかし、彼らの純粋な存在が、私が計画的にグリッドを形成するのを妨げているようです。 さらに、オートサイズのものは私が探していたものとまったく同じものでした。あなたの努力に感謝します! – Aaginor

関連する問題