如何在此按钮上添加当前日期和时间单击 windows 表单
How to add current date and time on this button click on windows form
我正在使用 windows 表单应用程序并在表单加载时动态创建一些控件。
创建的控件有 Label、UltraDateTimeEditor 和 Button。
我正在使用下面的代码来实现它。
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim n = 5
For i As Integer = 0 To n - 1
'Create label
Dim label As New Label()
label.Text = [String].Format("Label {0}", i)
'Position label on screen
label.Left = 50
label.Top = (i + 1) * 30
label.Width = 70
'Create UltraDateTimeEditor
Dim dtpicker = New UltraDateTimeEditor
dtpicker.Name = "Date" + i.ToString()
dtpicker.MaskInput = "{date} hh:mm"
dtpicker.MaskDisplayMode = MaskMode.IncludeBoth
dtpicker.SpinButtonDisplayStyle = Infragistics.Win.ButtonDisplayStyle.Always
dtpicker.Left = 120
dtpicker.Top = (i + 1) * 30
Dim button As New Button()
'Position textbox on screen
button.Text = "Now"
button.Left = 290
button.Top = (i + 1) * 30
'Add controls to form
Me.Panel1.Controls.Add(label)
Me.Panel1.Controls.Add(dtpicker)
Me.Panel1.Controls.Add(button)
Next
End Sub
画面是这样的
现在,当单击相应日期时间编辑器旁边的现在按钮时,我需要将当前日期和时间放入相应的日期时间编辑器中。
请建议我该怎么做。
要获取当前 DateTime
,只需使用以下两个属性之一(取决于您的用例):
DateTime.Now
DateTime.UtcNow
然后一旦你有了当前的 DateTime
,你就可以将控制显示 DateTime
的 UltraDateTimeEditor.Value
属性 设置为 之一现在 个属性。
要为每个按钮分配一个 EventHandler
,您需要创建一个 Sub 来处理特定按钮的 .Click
事件。但是,为了做到这一点,我们首先必须将按钮声明移到 Form Load 事件本地范围之外。
Dim button(5) As Button
Dim dtpicker(5) As UltraDateTimeEditor
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
For i As Integer = 0 To n - 1
'Create label
Dim label As New Label()
label.Text = [String].Format("Label {0}", i)
'Position label on screen
label.Left = 50
label.Top = (i + 1) * 30
label.Width = 70
'Create UltraDateTimeEditor
dtpicker(i) = New UltraDateTimeEditor
dtpicker(i).Name = "Date" + i.ToString()
dtpicker(i).MaskInput = "{date} hh:mm"
dtpicker(i).MaskDisplayMode = MaskMode.IncludeBoth
dtpicker(i).SpinButtonDisplayStyle = Infragistics.Win.ButtonDisplayStyle.Always
dtpicker(i).Left = 120
dtpicker(i).Top = (i + 1) * 30
button(i) = New Button()
'I assigned the index to the name so we can handle all 5 buttons with one event handler
button(i).Name = i.ToString()
'Position textbox on screen
button(i).Text = "Now"
button(i).Left = 290
button(i).Top = (i + 1) * 30
'Add controls to form
Me.Panel1.Controls.Add(label)
Me.Panel1.Controls.Add(dtpicker(i))
Me.Panel1.Controls.Add(button(i))
Next
End Sub
现在是按钮的事件处理程序代码。这将处理所有 5 个按钮
Private Sub Buttons_Click(sender As Object, e As EventArgs) Handles buttons(0).Click, buttons(1).Click, buttons(2).Click, buttons(3).Click, buttons(4).Click
Dim button As Button = DirectCast(sender, Button)
dtpicker(CInt(button.Name)).Value = DateTime.Now
End Sub
这里我们访问相关UltraDateTimeEditor数组元素的索引,并将其.Value
属性设置为当前DateTime
您可以使用 Label、DatePicker 和 Button 作为包含控件创建一个 UserControl,然后处理 UserControl 中的按钮事件,将 DateTime.Now 值分配给 UserControl 中的 DatePicker。
然后用新 UserControl 实例的创建替换您的原始代码。
您将需要 UserControl 的属性,即实例中的按钮文本和标签。
您可以将 AddHandler
用于 Button
的动态控件,这样当它们被点击时您可以 运行 一些代码...请注意:AddHandler
部分...
代码已经过测试
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Dim n = 5
For i As Integer = 0 To n - 1
'Create label
Dim label As New Label()
label.Text = [String].Format("Label {0}", i)
'Position label on screen
label.Left = 50
label.Top = (i + 1) * 30
label.Width = 70
Dim dtpicker = New UltraDateTimeEditor
dtpicker.Name = "Date" + i.ToString()
dtpicker.MaskInput = "{date} hh:mm"
dtpicker.MaskDisplayMode = MaskMode.IncludeBoth
dtpicker.SpinButtonDisplayStyle = Infragistics.Win.ButtonDisplayStyle.Always
dtpicker.Left = 120
dtpicker.Top = (i + 1) * 30
dtpicker.Tag = i 'Set this as we will use this for comparison
Dim button As New Button()
'Position textbox on screen
button.Text = "Now"
button.Tag = i 'Set this as we will use this for comparison
button.Left = 290
button.Top = (i + 1) * 30
'Add controls to form
Me.Controls.Add(label)
Me.Controls.Add(dtpicker)
Me.Controls.Add(button)
AddHandler button.Click, AddressOf UpdateTime
Next
End Sub
此方法处理更改 DateTime
对象...我们使用 Button.Tag
属性 并根据 DateTime.Tag
检查它。然后我们可以设置与 Button
.
关联的时间
Private Sub UpdateTime(sender As System.Object, e As System.EventArgs)
Dim nButton As Button = DirectCast(sender, Button)
If nButton IsNot Nothing AndAlso nButton.Tag >= 0 Then
For Each ctrl In Me.Controls.OfType(Of UltraDateTimeEditor)()
If ctrl.Tag = nButton.Tag Then
ctrl.Value = DateTime.UtcNow
Exit Sub
End If
Next
End If
End Sub
我正在使用 windows 表单应用程序并在表单加载时动态创建一些控件。
创建的控件有 Label、UltraDateTimeEditor 和 Button。
我正在使用下面的代码来实现它。
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim n = 5
For i As Integer = 0 To n - 1
'Create label
Dim label As New Label()
label.Text = [String].Format("Label {0}", i)
'Position label on screen
label.Left = 50
label.Top = (i + 1) * 30
label.Width = 70
'Create UltraDateTimeEditor
Dim dtpicker = New UltraDateTimeEditor
dtpicker.Name = "Date" + i.ToString()
dtpicker.MaskInput = "{date} hh:mm"
dtpicker.MaskDisplayMode = MaskMode.IncludeBoth
dtpicker.SpinButtonDisplayStyle = Infragistics.Win.ButtonDisplayStyle.Always
dtpicker.Left = 120
dtpicker.Top = (i + 1) * 30
Dim button As New Button()
'Position textbox on screen
button.Text = "Now"
button.Left = 290
button.Top = (i + 1) * 30
'Add controls to form
Me.Panel1.Controls.Add(label)
Me.Panel1.Controls.Add(dtpicker)
Me.Panel1.Controls.Add(button)
Next
End Sub
画面是这样的
现在,当单击相应日期时间编辑器旁边的现在按钮时,我需要将当前日期和时间放入相应的日期时间编辑器中。 请建议我该怎么做。
要获取当前 DateTime
,只需使用以下两个属性之一(取决于您的用例):
DateTime.Now
DateTime.UtcNow
然后一旦你有了当前的 DateTime
,你就可以将控制显示 DateTime
的 UltraDateTimeEditor.Value
属性 设置为 之一现在 个属性。
要为每个按钮分配一个 EventHandler
,您需要创建一个 Sub 来处理特定按钮的 .Click
事件。但是,为了做到这一点,我们首先必须将按钮声明移到 Form Load 事件本地范围之外。
Dim button(5) As Button
Dim dtpicker(5) As UltraDateTimeEditor
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
For i As Integer = 0 To n - 1
'Create label
Dim label As New Label()
label.Text = [String].Format("Label {0}", i)
'Position label on screen
label.Left = 50
label.Top = (i + 1) * 30
label.Width = 70
'Create UltraDateTimeEditor
dtpicker(i) = New UltraDateTimeEditor
dtpicker(i).Name = "Date" + i.ToString()
dtpicker(i).MaskInput = "{date} hh:mm"
dtpicker(i).MaskDisplayMode = MaskMode.IncludeBoth
dtpicker(i).SpinButtonDisplayStyle = Infragistics.Win.ButtonDisplayStyle.Always
dtpicker(i).Left = 120
dtpicker(i).Top = (i + 1) * 30
button(i) = New Button()
'I assigned the index to the name so we can handle all 5 buttons with one event handler
button(i).Name = i.ToString()
'Position textbox on screen
button(i).Text = "Now"
button(i).Left = 290
button(i).Top = (i + 1) * 30
'Add controls to form
Me.Panel1.Controls.Add(label)
Me.Panel1.Controls.Add(dtpicker(i))
Me.Panel1.Controls.Add(button(i))
Next
End Sub
现在是按钮的事件处理程序代码。这将处理所有 5 个按钮
Private Sub Buttons_Click(sender As Object, e As EventArgs) Handles buttons(0).Click, buttons(1).Click, buttons(2).Click, buttons(3).Click, buttons(4).Click
Dim button As Button = DirectCast(sender, Button)
dtpicker(CInt(button.Name)).Value = DateTime.Now
End Sub
这里我们访问相关UltraDateTimeEditor数组元素的索引,并将其.Value
属性设置为当前DateTime
您可以使用 Label、DatePicker 和 Button 作为包含控件创建一个 UserControl,然后处理 UserControl 中的按钮事件,将 DateTime.Now 值分配给 UserControl 中的 DatePicker。
然后用新 UserControl 实例的创建替换您的原始代码。
您将需要 UserControl 的属性,即实例中的按钮文本和标签。
您可以将 AddHandler
用于 Button
的动态控件,这样当它们被点击时您可以 运行 一些代码...请注意:AddHandler
部分...
代码已经过测试
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Dim n = 5
For i As Integer = 0 To n - 1
'Create label
Dim label As New Label()
label.Text = [String].Format("Label {0}", i)
'Position label on screen
label.Left = 50
label.Top = (i + 1) * 30
label.Width = 70
Dim dtpicker = New UltraDateTimeEditor
dtpicker.Name = "Date" + i.ToString()
dtpicker.MaskInput = "{date} hh:mm"
dtpicker.MaskDisplayMode = MaskMode.IncludeBoth
dtpicker.SpinButtonDisplayStyle = Infragistics.Win.ButtonDisplayStyle.Always
dtpicker.Left = 120
dtpicker.Top = (i + 1) * 30
dtpicker.Tag = i 'Set this as we will use this for comparison
Dim button As New Button()
'Position textbox on screen
button.Text = "Now"
button.Tag = i 'Set this as we will use this for comparison
button.Left = 290
button.Top = (i + 1) * 30
'Add controls to form
Me.Controls.Add(label)
Me.Controls.Add(dtpicker)
Me.Controls.Add(button)
AddHandler button.Click, AddressOf UpdateTime
Next
End Sub
此方法处理更改 DateTime
对象...我们使用 Button.Tag
属性 并根据 DateTime.Tag
检查它。然后我们可以设置与 Button
.
Private Sub UpdateTime(sender As System.Object, e As System.EventArgs)
Dim nButton As Button = DirectCast(sender, Button)
If nButton IsNot Nothing AndAlso nButton.Tag >= 0 Then
For Each ctrl In Me.Controls.OfType(Of UltraDateTimeEditor)()
If ctrl.Tag = nButton.Tag Then
ctrl.Value = DateTime.UtcNow
Exit Sub
End If
Next
End If
End Sub