Vb.net 我使用绑定源在数据库的文本框中显示数据,我能知道如何格式化文本框中显示的日期和时间吗?

Vb.net 我使用绑定源在数据库的文本框中显示数据,我能知道如何格式化文本框中显示的日期和时间吗?,vb.net,visual-programming,Vb.net,Visual Programming,Im使用绑定源,这是通过设置每个文本框的数据绑定属性来显示数据库中文本框中的数据,Me.PaymentTableAdapter.Fill(Me.RestaurantDataSet.Payment) 我是否可以知道如何设置日期和时间的格式,例如,文本框中显示的04 Jan 2020和23:00?默认显示样式为2020/01/04和23:00:00 我在谷歌上搜索过,但没有一个解决方案有效,我只是测试了以下代码,它按预期工作: Private Sub Form1_Load(sender As Obj

Im使用绑定源,这是通过设置每个文本框的数据绑定属性来显示数据库中文本框中的数据,
Me.PaymentTableAdapter.Fill(Me.RestaurantDataSet.Payment)

我是否可以知道如何设置日期和时间的格式,例如,文本框中显示的
04 Jan 2020
23:00
?默认显示样式为
2020/01/04
23:00:00


我在谷歌上搜索过,但没有一个解决方案有效,我只是测试了以下代码,它按预期工作:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Dim table As New DataTable

    With table.Columns
        .Add("Date", GetType(Date))
        .Add("Time", GetType(TimeSpan))
    End With

    With table.Rows
        .Add(#1/1/2000#, TimeSpan.FromHours(5.0))
        .Add(#2/4/2008#, TimeSpan.FromHours(10.25))
        .Add(#3/8/2016#, TimeSpan.FromHours(15.5))
        .Add(#4/12/2024#, TimeSpan.FromHours(20.75))
    End With

    BindingSource1.DataSource = table

    UnformattedDateTextBox.DataBindings.Add("Text", BindingSource1, "Date")
    UnformattedTimeTextBox.DataBindings.Add("Text", BindingSource1, "Time")
    FormattedDateTextBox.DataBindings.Add("Text", BindingSource1, "Date", True, DataSourceUpdateMode.OnValidation, Nothing, "dd MMM yyyy")
    FormattedTimeTextBox.DataBindings.Add("Text", BindingSource1, "Time", True, DataSourceUpdateMode.OnValidation, Nothing, "hh\:mm")
End Sub
我使用了四个
文本框
——两个不带格式,两个带格式。如您所见,我在绑定未格式化的
文本框
时仅提供了基本信息,但使用了带有更多参数的重载
Add
,以指定已启用格式化,以及绑定格式化的
文本框
时应采用的格式。为了提供格式字符串,还必须提供数据源更新模式和空值。在本例中,我已经为每个指定了默认值。如果不希望必须指定这些值,则可以返回到更基本的重载,然后在创建后设置其他必需的属性:

With FormattedDateTextBox.DataBindings.Add("Text", BindingSource1, "Date")
    .FormattingEnabled = True
    .FormatString = "dd MMM yyyy"
End With

With FormattedTimeTextBox.DataBindings.Add("Text", BindingSource1, "Time")
    .FormattingEnabled = True
    .FormatString = "hh\:mm"
End With
请注意,如果您的时间数据也是类型
Date
,则原理仍然相同。您只需使用不同格式的字符串:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Dim table As New DataTable

    With table.Columns
        .Add("DateTime", GetType(Date))
    End With

    With table.Rows
        .Add(#1/1/2000 5:00:00#)
        .Add(#2/4/2008 10:15:00#)
        .Add(#3/8/2016 15:30:00#)
        .Add(#4/12/2024 20:45:00#)
    End With

    BindingSource1.DataSource = table

    UnformattedDateTextBox.DataBindings.Add("Text", BindingSource1, "DateTime")
    UnformattedTimeTextBox.DataBindings.Add("Text", BindingSource1, "DateTime")

    With FormattedDateTextBox.DataBindings.Add("Text", BindingSource1, "DateTime")
        .FormattingEnabled = True
        .FormatString = "dd MMM yyyy"
    End With

    With FormattedTimeTextBox.DataBindings.Add("Text", BindingSource1, "DateTime")
        .FormattingEnabled = True
        .FormatString = "HH:mm"
    End With
End Sub

我刚刚测试了以下代码,它按预期工作:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Dim table As New DataTable

    With table.Columns
        .Add("Date", GetType(Date))
        .Add("Time", GetType(TimeSpan))
    End With

    With table.Rows
        .Add(#1/1/2000#, TimeSpan.FromHours(5.0))
        .Add(#2/4/2008#, TimeSpan.FromHours(10.25))
        .Add(#3/8/2016#, TimeSpan.FromHours(15.5))
        .Add(#4/12/2024#, TimeSpan.FromHours(20.75))
    End With

    BindingSource1.DataSource = table

    UnformattedDateTextBox.DataBindings.Add("Text", BindingSource1, "Date")
    UnformattedTimeTextBox.DataBindings.Add("Text", BindingSource1, "Time")
    FormattedDateTextBox.DataBindings.Add("Text", BindingSource1, "Date", True, DataSourceUpdateMode.OnValidation, Nothing, "dd MMM yyyy")
    FormattedTimeTextBox.DataBindings.Add("Text", BindingSource1, "Time", True, DataSourceUpdateMode.OnValidation, Nothing, "hh\:mm")
End Sub
我使用了四个
文本框
——两个不带格式,两个带格式。如您所见,我在绑定未格式化的
文本框
时仅提供了基本信息,但使用了带有更多参数的重载
Add
,以指定已启用格式化,以及绑定格式化的
文本框
时应采用的格式。为了提供格式字符串,还必须提供数据源更新模式和空值。在本例中,我已经为每个指定了默认值。如果不希望必须指定这些值,则可以返回到更基本的重载,然后在创建后设置其他必需的属性:

With FormattedDateTextBox.DataBindings.Add("Text", BindingSource1, "Date")
    .FormattingEnabled = True
    .FormatString = "dd MMM yyyy"
End With

With FormattedTimeTextBox.DataBindings.Add("Text", BindingSource1, "Time")
    .FormattingEnabled = True
    .FormatString = "hh\:mm"
End With
请注意,如果您的时间数据也是类型
Date
,则原理仍然相同。您只需使用不同格式的字符串:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Dim table As New DataTable

    With table.Columns
        .Add("DateTime", GetType(Date))
    End With

    With table.Rows
        .Add(#1/1/2000 5:00:00#)
        .Add(#2/4/2008 10:15:00#)
        .Add(#3/8/2016 15:30:00#)
        .Add(#4/12/2024 20:45:00#)
    End With

    BindingSource1.DataSource = table

    UnformattedDateTextBox.DataBindings.Add("Text", BindingSource1, "DateTime")
    UnformattedTimeTextBox.DataBindings.Add("Text", BindingSource1, "DateTime")

    With FormattedDateTextBox.DataBindings.Add("Text", BindingSource1, "DateTime")
        .FormattingEnabled = True
        .FormatString = "dd MMM yyyy"
    End With

    With FormattedTimeTextBox.DataBindings.Add("Text", BindingSource1, "DateTime")
        .FormattingEnabled = True
        .FormatString = "HH:mm"
    End With
End Sub

在TextBox@Jimi的和事件中添加处理程序,除非您需要一些不同寻常的东西,否则不需要处理事件。如果数据类型为
Date
,则只需将
FormattingEnabled
属性设置为
True
,然后适当设置
formattingstring
属性即可。如果时间数据的类型为
TimeSpan
,那么同样的事情也可能发生,尽管我不是100%确定。@jmchiliney肯定,如果您不需要处理文化信息设置/特定语言格式/输入/输出数据验证(或转换为Unix时间戳、System.Management扩展日期时间格式等),硬编码格式就足够了。格式可以应用于表示DateTime、TimeSpan、DateTimeOffset等的数据列。将处理程序添加到TextBox@Jimi的和事件中,除非您需要一些不同寻常的东西,否则无需处理事件。如果数据类型为
Date
,则只需将
FormattingEnabled
属性设置为
True
,然后适当设置
formattingstring
属性即可。如果时间数据的类型为
TimeSpan
,那么同样的事情也可能发生,尽管我不是100%确定。@jmchiliney肯定,如果您不需要处理文化信息设置/特定语言格式/输入/输出数据验证(或转换为Unix时间戳、System.Management扩展日期时间格式等),硬编码格式就足够了。格式可以应用于表示日期时间、时间跨度、日期时间偏移量等的数据列。