VB.Net根据变量值显示/隐藏按钮

时间:2014-04-01 19:15:53

标签: vb.net winforms variables button

我正在尝试根据变量的值来管理按钮的可见性。 我有一个包含2个部分的应用程序:Haulier和Customer。

当Haulier登录时,他们有权通过单击名为View的按钮来查看客户部分。这会将他们带到客户部门。我需要显示一个按钮,让他们回到Haulier区。客户登录后,此按钮不可见。

我有一个名为admin的变量。 单击“查看”按钮时,变量将分配为1 当客户部分加载时,它会检查变量的值,并根据变量的值决定是否显示或隐藏按钮。

如果我打开应用程序并以客户身份登录并关闭应用程序,它可以正常工作。 如果我打开应用程序并以Haulier身份登录并关闭应用程序,它可以正常工作。 如果我尝试在不关闭应用程序的情况下在同一会话中登录这两个部分(无论哪种方式),它都不起作用。

代码跨越大约6页,这使得发布过于复杂。我一直试图解决这个问题几个小时,我根本不知道为什么它不起作用。

有人可以告诉我如何解决这个问题吗?

使用一些代码进行更新:

全局变量是admin,存储在模块

    Public admin As Integer

在Customer Section页面上加载代码如下:

    Label3.Text = jkpadmin
    If jkpadmin = 1 Then
        btn_backjkpadmin.Show()
    Else
        btn_backjkpadmin.Hide()
    End If

在Haulier Section页面上查看按钮代码如下:

    jkpadmin = 1
    Me.Hide()
    frm_3custjkphome.Show()

该变量似乎没有更新。当这些部分单独使用但是一个在另一个之后使用它不起作用时它可以工作吗?

更新更多解释:

如果我首先进入“客户”部分,则按钮不应显示在页面加载(按预期工作)

然后关闭它

如果我首先进入Haulier部分,然后单击View按钮转到客户部分,按钮应显示(按预期工作)

如果我首先进入客户部分,如果我在没有关闭后进入Haulier部分并单击View按钮转到客户部分按钮不显示(应该)

如果我先进入Haulier部分,那么如果我在没有关闭的情况下进入客户部分就会显示(不应该是)

3 个答案:

答案 0 :(得分:1)

我想我看到了问题。这是在这个声明中:

  

当客户部分加载时,它会检查变量的值,并根据变量的值决定是显示还是隐藏按钮。

(强调我的)

您可以多次显示和隐藏表单实例,但只会加载一次。将该逻辑移到Form的Activated事件中,你会没事的。

答案 1 :(得分:1)

感谢所有有用的评论。我已经使用过这些并设法解决了我的问题。

我在激活的页面上放置了以下代码而不是页面加载

    If jkpadmin = 1 Then
        btn_backjkpadmin.Show()
    Else
        btn_backjkpadmin.Hide()
    End If

并在运输工具无法访问的按钮(仅限客户)

上将变量重置为0

我知道这是一个非常具体的问题。但是那些你帮助过的人。非常感谢:)

答案 2 :(得分:0)

变量admin的结构是什么?如果它是一个全局变量,可能会导致问题,具体取决于它的设置位置和刷新方式。

此外,为什么这个admin变量看起来与用户对象分开存在?你不应该有这样的事情:

'Very basic customer setup
Class Customer
    Public Property Name() As String
        Get
            Return m_Name
        End Get
        Set
            m_Name = Value
        End Set
    End Property
    Private m_Name As String
    Public Property Type() As CustomerType
        Get
            Return m_Type
        End Get
        Set
            m_Type = Value
        End Set
    End Property
    Private m_Type As CustomerType

    Public Sub New(id As Integer)
        'Load customer data
        Name = "Test User"
        Type = CustomerType.Admin
    End Sub
End Class

'Customer type
Enum CustomerType
    User
    Admin
End Enum

'Very basic usage
Public Class Code
    Public Sub New()
        Dim customer__1 As Customer = Customer.Load(32)
        button.Visible = customer__1.Type = CustomerType.Admin
    End Sub
End Class