Vb.net 以编程方式添加窗体和控件
我有以下代码; 我以编程方式添加了第二个窗体和控件,但计时器在第二个窗体中工作不正常; 当然,它在主要形式中工作正常; 我需要帮助在第二种形式中做与我在主要形式中做的完全相同的事情; 提前感谢您的帮助Vb.net 以编程方式添加窗体和控件,vb.net,forms,Vb.net,Forms,我有以下代码; 我以编程方式添加了第二个窗体和控件,但计时器在第二个窗体中工作不正常; 当然,它在主要形式中工作正常; 我需要帮助在第二种形式中做与我在主要形式中做的完全相同的事情; 提前感谢您的帮助 Public Class Form1 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim frmNew As New Form frmNe
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim frmNew As New Form
frmNew.Visible = True
Dim Label2 As New Label()
frmNew.Controls.Add(Label2)
Label2.Name = "Label1"
oTimer = New System.Windows.Forms.Timer
oTimer.Interval = 1000
oTimer.Enabled = True
oTimer.Start()
frmNew.Text = Date.Now
Label2.Text = Date.Now
End Sub
Private WithEvents oTimer As System.Windows.Forms.Timer
Private Sub timerTicks() Handles oTimer.Tick
Me.Text = Date.Now
label1.text = Date.Now
'frmNew.Text = Date.Now
'frmNew.Label2.Text = Date.Now
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
End Sub
End Class
您需要以某种方式将对表单和标签的引用传递到计时器的Tick()事件中。这里有一种方法:
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim frmNew As New Form
Dim Label2 As New Label()
frmNew.Controls.Add(Label2)
Dim tmr As New System.Windows.Forms.Timer
AddHandler tmr.Tick, AddressOf tmr_Tick
tmr.Tag = New Tuple(Of Control, Control)(frmNew, Label2)
tmr.Interval = 1000
tmr.Start()
frmNew.Text = Date.Now
Label2.Text = Date.Now
frmNew.Show()
End Sub
Private Sub tmr_Tick(sender As Object, e As EventArgs)
Dim T As Tuple(Of Control, Control) = DirectCast(DirectCast(sender, System.Windows.Forms.Timer).Tag, Tuple(Of Control, Control))
Dim frm As Form = DirectCast(T.Item1, Form)
Dim lbl As Label = DirectCast(T.Item2, Label)
Dim curTime As String = DateTime.Now.ToString("h:mm:ss tt")
frm.Text = curTime
lbl.Text = curTime
End Sub
End Class
frmNew中没有计时器滴答声事件
timerticks
是Form1的私有项,因此frmNew(及其控件)可以使用它。您也没有将计时器添加到Form2为什么不设计并显示此表单?一个空白的新表单具有所有默认值,看起来不如您设计的表单;您能告诉我如何:“在frmNew中添加一个计时器滴答事件。timerticks是Form1的私有项,因此frmNew(及其控件)可以使用它。”,请?提前谢谢。你好,非常感谢你的帮助;最后一个问题,如果我运行代码;我得到了显示秒数的frm.文本;但是lbl.Text只显示月份和日期;有没有一种方法可以显示lbl的时、分、秒?太好了;谢谢你的心;我厌倦了“投票”;但不允许,因为我需要达到15级或以上;对不起。我真的很感谢你的帮助。