我'已经: - Datagridview - BindingSource - BindingList
我将BindingList与包含dateTime属性的类相关联。 datagridview将值显示为' dd / mm / yy hh:MM'。 我想格式化为' hh:MM:ss'。
我知道有一种设置列的模式:
dataGridView1.Columns["yourColumnName"].DefaultCellStyle.Format = "t"
但我想知道是否有不同的方法,特别是在两个方面: 1)设置System.ComponentModel属性 我想到了
<System.ComponentModel.DataAnnotation.DisplayFormat(ApplyFormatInEditMode:= True, DataFormatString:= "{hh:MM:ss}")>
但它不起作用。
2)将Datagridview中的所有dateTime列设置为&#39; DefaultCellStyle.Format =&#34; t&#34; 但是我不太喜欢这个解决方案,因为datagridview它绑定了一个类,我喜欢它已经在系统中通过系统规划的所有格式.ComponentModel类属性。
你有什么建议吗?
P.S。代码如下:
Public dataGridView1 As New DataGridView
Public bs as New BindingSource
Public bl as New BindingList(Of MyClass)
...
bs.DataSource = bl
dataGridView1.DataSource = bs
...
Public Class myClass
Sub New()
bl.Add(ME)
End Sub
<System.ComponentModel.Browsable(True)>
<System.ComponentModel.DataAnnotations.DisplayFormat(ApplyFormatInEditMode:=True, DataFormatString:= "hh:MM:ss")>
Public Property myDate As DateTime
End Class
答案 0 :(得分:0)
我找到了解决方案(在MSDN网页上)。
正如本网页所述
解决方案可以处理CellFormatting事件,如msdn所述 https://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.cellformatting.aspx
所以在代码中:
Private Sub dataGridView1_CellFormatting(ByVal Sender As Object, ByVal e As DataGridViewCellFormattingEventArgs) Handles dataGridView1.CellFormatting
With dataGridView1.Columns(e.ColumnIndex)
'you can format just a column referring to the name of the property which with is binded'
Select Case .Name
Case "the_Name_Of_The_Property_Binded"
e.CellStyle.Format = "hh:MM:ss"
End Select
'or you can format all the columns that are associated with a DateTime Property'
If .ValueType = GetType(DateTime) Then
e.CellStyle.Format = "hh:MM:ss"
End If
End With
End Sub
但我认为这是一个更好的解决方案: