2010-08-22 74 views
1

我在DataGridView上显示价格(在VS 2008上用C#开发的WinForms应用程序上)。 列类型是DataGridViewComboBoxColumn。从DataGridViewComboBox格式化列表项目

此列的DefaultCellStyle.Format属性设置为“C2”,价格确实格式化为此列的单元格中的货币。

但是,当用户单击组合框选择一个值时,列表中的值未格式化。 例如,而不是看到:

3.90 € 
4.50 € 
5.95 € 

他们看到

3.9 
4.5 
5.95 

值也是左对齐,而我宁愿让他们右对齐。

下面是一幅显示当前行为的图片,我们可以清楚地看到它看起来并不像它那么好。

alt text

是否有可能得到的结果,我之后?

谢谢。

回答

1

只是处理EditingControlShowing事件对你DataGridView做:

void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) 
{ 
    ComboBox cb = e.Control as ComboBox; 
    if (cb != null) 
     cb.FormatString = "<your format string>"; // e.g. "C2" 
} 
+0

大,这是工作的感谢。 如果我有几个我想格式不同的ComboBox列,该怎么办?在大多数事件中,我有一个e.ColumnIndex属性,它允许我查看事件被提出的列,但对于EditingControlShowing事件似乎并不是这种情况?谢谢! – 2010-08-22 10:24:38

+0

嗯,我只是这样做:“if(gridView.CurrentCell.ColumnIndex == gridView.Columns [”Price“]。Index)” 它的确有用,但如果有更好的方法,请不要犹豫让我知道。谢谢。 – 2010-08-22 10:27:59

+1

是的,我认为这是正确的方法;) – digEmAll 2010-08-22 11:57:07