如何根据变量加载表单数据?

huangapple go评论57阅读模式
英文:

How do I load form data based on variable?

问题

Form1

    Public Class MainScreen
        Public RebootServer As Integer = 0
        Public StartServer As Integer = 0
        Public StopServer As Integer = 0
        Public CurrentServerInfo As Integer = 0

        Private Sub RebootServerMenuItem_Click(sender As Object, e As EventArgs) Handles RebootServerMenuItem.Click
            RebootServer = 1
            CurrentConnectionForm.Show()
        End Sub

        Private Sub StartServerMenuItem_Click(sender As Object, e As EventArgs) Handles StartServerMenuItem.Click
            StartServer = 1
            CurrentConnectionForm.Show()
        End Sub

        Private Sub StopServerMenuItem_Click(sender As Object, e As EventArgs) Handles StopServerMenuItem.Click
            StopServer = 1
            CurrentConnectionForm.Show()
        End Sub

        Private Sub ConnectionInfoMenuItem_Click(sender As Object, e As EventArgs) Handles ConnectionInfoMenuItem.Click
            CurrentServerInfo = 1
            CurrentConnectionForm.Show()
        End Sub
    End Class

Form2

    Public Class CurrentConnectionForm

        Dim RebootServer As Integer = MainScreen.RebootServer
        Dim StartServer As Integer = MainScreen.StartServer
        Dim StopServer As Integer = MainScreen.StopServer
        Dim CurrentServerInfo As Integer = MainScreen.CurrentServerInfo

        Private Sub CurrentConnectionForm_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load

            If RebootServer = 1 Then
                RebootServerLabel.Visible = True
                StartServerLabel.Visible = False
                StopServerLabel.Visible = False
                ConnectionInfoLabel.Visible = False
            End If

            If StartServer = 1 Then
                RebootServerLabel.Visible = False
                StartServerLabel.Visible = True
                StopServerLabel.Visible = False
                ConnectionInfoLabel.Visible = False
            End If

            If StopServer = 1 Then
                RebootServerLabel.Visible = False
                StartServerLabel.Visible = False
                StopServerLabel.Visible = True
                ConnectionInfoLabel.Visible = False
            End If

            If CurrentServerInfo = 1 Then
                RebootServerLabel.Visible = False
                StartServerLabel.Visible = False
                StopServerLabel.Visible = False
                ConnectionInfoLabel.Visible = True
            End If
        End Sub
    End Class

I hope this helps!

英文:

I am trying to load a form when a button is clicked. The form should show a label based on which button is clicked. When I run the code below everything works correctly EXCEPT after I go thru the buttons the variable from the last button is the only one that displays no matter what I click.

Form1

    Public Class MainScreen
        Public RebootServer As Integer = 0
        Public StartServer As Integer = 0
        Public StopServer As Integer = 0
        Public CurrentServerInfo As Integer = 0

        Private Sub RebootServerMenuItem_Click(sender As Object, e As EventArgs) Handles RebootServerMenuItem.Click
            RebootServer = 1
            CurrentConnectionForm.Show()
        End Sub

        Private Sub StartServerMenuItem_Click(sender As Object, e As EventArgs) Handles StartServerMenuItem.Click
            StartServer = 1
            CurrentConnectionForm.Show()

        End Sub

        Private Sub StopServerMenuItem_Click(sender As Object, e As EventArgs) Handles StopServerMenuItem.Click
            StopServer = 1
            CurrentConnectionForm.Show()

        End Sub

        Private Sub ConnectionInfoMenuItem_Click(sender As Object, e As EventArgs) Handles ConnectionInfoMenuItem.Click
            CurrentServerInfo = 1
            CurrentConnectionForm.Show()

        End Sub
    End Class

Form2

    Public Class CurrentConnectionForm

        Dim RebootServer As Integer = MainScreen.RebootServer
        Dim StartServer As Integer = MainScreen.StartServer
        Dim StopServer As Integer = MainScreen.StopServer
        Dim CurrentServerInfo As Integer = MainScreen.CurrentServerInfo

        Private Sub CurrentConnectionForm_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load


            If RebootServer = 1 Then
                RebootServerLabel.Visible = True
                StartServerLabel.Visible = False
                StopServerLabel.Visible = False
                ConnectionInfoLabel.Visible = False
            End If
            If StartServer = 1 Then
                RebootServerLabel.Visible = False
                StartServerLabel.Visible = True
                StopServerLabel.Visible = False
                ConnectionInfoLabel.Visible = False
            End If
            If StopServer = 1 Then
                RebootServerLabel.Visible = False
                StartServerLabel.Visible = False
                StopServerLabel.Visible = True
                ConnectionInfoLabel.Visible = False
            End If
            If CurrentServerInfo = 1 Then
                RebootServerLabel.Visible = False
                StartServerLabel.Visible = False
                StopServerLabel.Visible = False
                ConnectionInfoLabel.Visible = True
            End If
        End Sub
    End Class

I have tried changing the if statements to if/else if, and rearranging when the variables were called.

When I click reboot server on form1 I want form2 to load and display the label for rebooting server, same for start, stop and connection info.

答案1

得分: 1

创建一个Enum来保存四种不同的状态,然后声明一个相应类型的Shared变量:

Public Class MainScreen

    Public Enum ServerTypeEnum
        RebootServer
        StartServer
        StopServer
        CurrentServerInfo
    End Enum

    Public Shared ServerType As ServerTypeEnum

    Private Sub RebootServerMenuItem_Click(sender As Object, e As EventArgs) Handles RebootServerMenuItem.Click
        ServerType = ServerTypeEnum.RebootServer
        CurrentConnectionForm.Show()
    End Sub

    Private Sub StartServerMenuItem_Click(sender As Object, e As EventArgs) Handles StartServerMenuItem.Click
        ServerType = ServerTypeEnum.StartServer
        CurrentConnectionForm.Show()
    End Sub

    Private Sub StopServerMenuItem_Click(sender As Object, e As EventArgs) Handles StopServerMenuItem.Click
        ServerType = ServerTypeEnum.StopServer
        CurrentConnectionForm.Show()
    End Sub

    Private Sub ConnectionInfoMenuItem_Click(sender As Object, e As EventArgs) Handles ConnectionInfoMenuItem.Click
        ServerType = ServerTypeEnum.CurrentServerInfo
        CurrentConnectionForm.Show()
    End Sub

End Class

现在你的第二个表单简化为

```vbnet
Public Class CurrentConnectionForm

    Private Sub CurrentConnectionForm_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
        RebootServerLabel.Visible = (MainScreen.ServerType = MainScreen.ServerTypeEnum.RebootServer)
        StartServerLabel.Visible = (MainScreen.ServerType = MainScreen.ServerTypeEnum.StartServer)
        StopServerLabel.Visible = (MainScreen.ServerType = MainScreen.ServerTypeEnum.StopServer)
        ConnectionInfoLabel.Visible = (MainScreen.ServerType = MainScreen.ServerTypeEnum.CurrentServerInfo)
    End Sub

End Class
英文:

Make an Enum to hold the four different states, then declared a Shared variable of that type:

Public Class MainScreen

    Public Enum ServerTypeEnum
        RebootServer
        StartServer
        StopServer
        CurrentServerInfo
    End Enum

    Public Shared ServerType As ServerTypeEnum

    Private Sub RebootServerMenuItem_Click(sender As Object, e As EventArgs) Handles RebootServerMenuItem.Click
        ServerType = ServerTypeEnum.RebootServer
        CurrentConnectionForm.Show()
    End Sub

    Private Sub StartServerMenuItem_Click(sender As Object, e As EventArgs) Handles StartServerMenuItem.Click
        ServerType = ServerTypeEnum.StartServer
        CurrentConnectionForm.Show()
    End Sub

    Private Sub StopServerMenuItem_Click(sender As Object, e As EventArgs) Handles StopServerMenuItem.Click
        ServerType = ServerTypeEnum.StopServer
        CurrentConnectionForm.Show()
    End Sub

    Private Sub ConnectionInfoMenuItem_Click(sender As Object, e As EventArgs) Handles ConnectionInfoMenuItem.Click
        ServerType = ServerTypeEnum.CurrentServerInfo
        CurrentConnectionForm.Show()
    End Sub

End Class

Now your second form simply becomes:

Public Class CurrentConnectionForm

    Private Sub CurrentConnectionForm_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
        RebootServerLabel.Visible = (MainScreen.ServerType = MainScreen.ServerTypeEnum.RebootServer)
        StartServerLabel.Visible = (MainScreen.ServerType = MainScreen.ServerTypeEnum.StartServer)
        StopServerLabel.Visible = (MainScreen.ServerType = MainScreen.ServerTypeEnum.StopServer)
        ConnectionInfoLabel.Visible = (MainScreen.ServerType = MainScreen.ServerTypeEnum.CurrentServerInfo)
    End Sub

End Class

huangapple
  • 本文由 发表于 2023年2月27日 05:29:46
  • 转载请务必保留本文链接:https://go.coder-hub.com/75575126.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定