如何创建表单的不同实例

时间:2011-05-01 12:05:38

标签: vb.net winforms

以下代码写在Timer Tick事件中。只要时间和日期不同,它就可以正常工作。当时间和日期相同时,它只显示1条消息。如何在同一日期和时间显示多条消息?我认为这可以完成如果我为表单创建不同的实例。但我不知道数据库中会有多少相同的时间和日期。所以我不能这样做。有什么工作吗?

Dim frm As New frmMessage
Dim nowDate As String = String.Format("{0:M/d/yyyy}", DateTime.Now)
Dim nowTime As String = String.Format("{0:h:mm tt}", DateTime.Now)
Dim mySelectQuery As String = "SELECT ReminderID, Date, Time, Subject, Reminder FROM Reminder WHERE Date LIKE '" & nowDate & "' AND Time LIKE '" & nowTime & "'"
Dim myConnString As String = "Data Source=" & Application.StartupPath & "\Database\SimpleDB.db3"
Dim sqConnection As New SQLiteConnection(myConnString)
Dim sqCommand As New SQLiteCommand(mySelectQuery, sqConnection)

sqConnection.Open()

Dim sqReader As SQLiteDataReader = sqCommand.ExecuteReader()

Try
    If sqReader.HasRows = True Then

        While sqReader.Read()
            frm.Show()

            If (Not sqReader.IsDBNull(0)) Then
                frm.txtID.Text = sqReader.GetInt32(0)
            End If

            If (Not sqReader.IsDBNull(1)) Then
                frm.txtDate.Text = sqReader.GetString(1)
            End If

            If (Not sqReader.IsDBNull(2)) Then
                frm.txtTime.Text = sqReader.GetString(2)
            End If

            If (Not sqReader.IsDBNull(3)) Then
                frm.txtSubject.Text = sqReader.GetString(3)
            End If

            If (Not sqReader.IsDBNull(4)) Then
                frm.txtReminderText.Text = sqReader.GetString(4)
            End If

        End While

    End If

    sqReader.Close()
    sqConnection.Close()

Catch ex As Exception
    MsgBox("Error:" & ex.Message, vbExclamation)
End Try

1 个答案:

答案 0 :(得分:2)

如果我理解正确,您希望显示从数据库中回溯的每一行的表单。 如果你有超过几行,我不确定这种UI实践是最好的, 但你可以像你对​​每一行所说的那样实例化新表格, 而不是使用相同的实例 你需要做的就是替换:

frm.Show() 

Dim newForm As New frmMessage()
newForm.Show()