使用vb.net从其他表单获取标签的值

时间:2013-02-18 15:40:24

标签: vb.net

它不起作用,标签只会返回其默认值。您认为这是什么问题?

好的,这是我的代码:

其实我在这里使用mysql作为我的数据库

这是生成标签值的表单:

Private Sub ProfileControl_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Try
        Dim conn As New MySqlConnection(ServerString)
        Dim dap As New MySqlDataAdapter("select * from employee where LogInID = '" & Main.ID.Text & "'", conn)
        Dim dt As New DataTable
        dap.Fill(dt)

        employeenum = dt.Rows(0).Item("EmployeeID")
        position = dt.Rows(0).Item("Position")
        employeename = dt.Rows(0).Item("FirstName") + " " + dt.Rows(0).Item("LastName")

        lblemployeename.Text = employeename
        lblemployeenum.Text = employeenum
        EmpPosition.Text = position

    Catch ex As Exception
        MsgBox(ex.Message)
    End Try
End Sub

这是将检索3个标签的值的表单。

Private Sub addsavebutton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles addsavebutton.Click
    Dim profile As New ProfileControl


    If txtbranchname.Text <> "" Then
        If addsavebutton.Text = "ADD" Then

            Dim zero As Integer = 0
            Dim SQLStatement As String = "INSERT INTO branch(BranchName,Centers)VALUES('" & txtbranchname.Text & "','0') "
            SaveCenter(SQLStatement)
            logdate = Convert.ToDateTime(Date.Now).ToString("yyyy-MM-dd hh:mm:ss")
            logdate2 = Format(Date.Now, "yyyy-MM-dd")
            status = "Added Branch " + txtbranchname.Text
            SQLStatement = "INSERT INTO log(EmployeeID,Name,EmployeePosition,Date,DateTime,Status)VALUES('" & profile.lblemployeenum.Text & "','" & profile.lblemployeename.Text & "','" & profile.EmpPosition.Text & "','" & logdate2 & "','" & logdate & "','" & status & "' )"
            Savelog(SQLStatement)
            txtbranchname.Clear()
        ElseIf addsavebutton.Text = "SAVE" Then
            Dim Query As String

            Dim con As MySqlConnection = New MySqlConnection(ServerString)
            con.Open()

            Query = "UPDATE branch SET  BranchName = '" & txtbranchname.Text & "' WHERE BranchCode = '" & txtbranchcode.Text & "'"


            Dim cmd As MySqlCommand = New MySqlCommand(Query, con)
            Dim i As Integer = cmd.ExecuteNonQuery()
            If (i > 0) Then

                'success
                Dim Successtext As New MsgSuccess
                Successtext.PassedText = "Record is Successfully Updated"
                Successtext.ShowDialog()


                Dim SQLStatement As String
                logdate = Convert.ToDateTime(Date.Now).ToString("yyyy-MM-dd hh:mm:ss")
                logdate2 = Format(Date.Now, "yyyy-MM-dd")
                status = "Updated Branch: " + txtbranchcode.Text + ", " + txtbranchname.Text
                SQLStatement = "INSERT INTO log(EmployeeID,Name,EmployeePosition,Date,DateTime,Status)VALUES('" & profile.lblemployeenum.Text & "','" & profile.lblemployeename.Text & "','" & Main.lbldate.Text & "','" & logdate2 & "','" & logdate & "','" & status & "' )"
                Savelog(SQLStatement)

                srchTextBox.Clear()
                con.Close()

            Else
                'error
                Dim Errortext As New Msgerror
                Errortext.PassedText = "Record is not Updated"
                Errortext.ShowDialog()



            End If


        End If
    Else
        Dim Errortext As New Msgerror
        Errortext.PassedText = "All Entries with * must be filled"
        Errortext.ShowDialog()

    End If
End Sub

3 个答案:

答案 0 :(得分:1)

首先,在form1中创建form2的实例。

Dim secondform As New Form2

在您的form2上,转到三个标签的“修饰符”属性并将其更改为公开。

然后,您可以在form1中设置变量以获取标签的值,如下所示;

Dim a As String = secondform.lblemployeename.Text
Dim b As String = secondform.lblemployeenum.Text
Dim c As String = secondform.lblEmpPosition.Text

这应该使'a','b'和'c'成为标签的价值

答案 1 :(得分:0)

只需添加表单名称中的控件:

Form2.lblemployeename.Text
Form2.lblemployeenum.Text
Form2.lblEmpPosition.Text

对我来说,在带有VS2005的VB.NET 2.0中,创建了控件Friend。检查表单设计器并将控件放在PublicFriend(如果需要,请With Events),以便从其他表单中使用它们。

答案 2 :(得分:0)

您似乎正在创建表单实例(Dim profile As New ProfileControl),然后尝试访问其控件值。你有没有创建ProfileControl吗?

无论如何,如果ProfileControl是表单,Load事件只会在表单加载时显示(当您显示表单时),因此标签的值不会被加载。

如果您已经显示该表单,请不要创建该实例并使用您显示的表单名称来访问标签。

如果您没有显示表单,则应考虑在其他变量中创建该值,然后将其分配给标签或创建自己的类等。