1

第一次在这里发帖。我有一个相对不好的问题 - 但我是新手,所以请耐心等待。

我正在为朋友编写一个简单的应用程序来跟踪一些日常问题/行为以进行报告。我试图使用几乎是一种向导风格,但我发现的向导示例要么是不必要的复杂,要么是过时的。

我所拥有的是一个 Windows 表单——为了争论——5个面板,彼此堆叠。每个面板都包含一组不同的控件(我无法完全重复使用所有控件或进入“模板”方向)。面板下方是 3 个按钮 - 取消、返回、下一步。

我想要做的就是使用 Next 和 Back 按钮在面板之间导航。即当我单击“下一步”时,单击事件从面板 A 设置变量值,然后将其隐藏并加载面板 B,然后下一步设置 B 的值并加载 C 等等。

我想我可以用某种数组或对象列表来做到这一点,但我不确定最好的方法。我在另一个论坛上问过,我得到的唯一答案是将按钮添加到面板中,并让它们专门用于将表单置于前后。这似乎非常低效,我知道有更好的方法来做到这一点。你们能对此有所了解吗?

4

1 回答 1

0

我个人会创建一个List<Of Panel>并将面板添加到它。然后使用一个整数并在 0 到 4 之间递增,BringToFront用于显示当前面板。像这样的东西。

Public Class Form1
    Dim myPanels As List(Of Panel) = New List(Of Panel)
    Dim count As Integer = 0

    Private Sub btnCancel_Click(sender As System.Object, e As System.EventArgs) Handles btnCancel.Click
        count = 0
        myPanels(count).BringToFront()
    End Sub

    Private Sub btnNext_Click(sender As System.Object, e As System.EventArgs) Handles btnNext.Click
        If count < 4 Then
            count += 1
        Else
            count = 0
        End If
        myPanels(count).BringToFront()
    End Sub

    Private Sub bntPrevious_Click(sender As System.Object, e As System.EventArgs) Handles btnPrevious.Click
        If count > 0 Then
            count -= 1
        Else
            count = 4
        End If
        myPanels(count).BringToFront()
    End Sub

    Public Sub New()

        ' This call is required by the designer.
        InitializeComponent()

        myPanels.Add(Panel1)
        myPanels.Add(Panel2)
        myPanels.Add(Panel3)
        myPanels.Add(Panel4)
        myPanels.Add(Panel5)
        myPanels(count).BringToFront()

    End Sub
End Class
于 2013-03-30T22:03:41.077 回答