【发布时间】:2023-04-04 08:30:01
【问题描述】:
我正在编写一些有点像向导的代码,但我不知道该怎么做。
我有多种形式。每个人都会做一些不同的事情,这取决于前一个表单中的数据。有一个“主表单”可以从每个人那里获取输入并将其传递给另一个人。通常我只会使用 form.ShowDialog(),等待输入,实例化下一个表单并重复。但是,这一次用户需要每隔一段时间返回到之前的表单。
我用“GoTo”语句编写了一些非常简单的代码,以便您理解问题所在。是的,它有效,但我想知道是否有更好的方法来做到这一点。我已经被这个问题困扰了一段时间,所以非常感谢任何帮助!
测试表格:
Public Class TestForm
Public Property Result As Object
Public Sub New(data As Object)
InitializeComponent()
DoSomethingWithData(data)
End Sub
Private Sub DoSomethingWithData(data As Object)
Result = "something"
End Sub
End Class
Public Class MasterForm
Inherits Form
Public Sub New()
Dim button As New Button()
AddHandler button.Click, AddressOf Start
Controls.Add(button)
End Sub
Private Sub Start(sender As Object, e As EventArgs)
Step1:
Dim testForm1 = New TestForm("rainbows")
If testForm1.ShowDialog() = DialogResult.Cancel Then
Return
End If
Step2:
Dim testForm2 = New TestForm(testForm1.Result)
If testForm2.ShowDialog() = DialogResult.Cancel Then
GoTo Step1
End If
Step3:
Dim testForm3 = new TestForm(testForm2.Result)
If testForm3.ShowDialog() = DialogResult.Cancel Then
Goto Step2
End If
End Sub
End Class
【问题讨论】:
-
表单可以嵌入到另一个表单的容器中。我解决这个问题的方法是在页面登陆时依次实例化所有每个表单,然后将它们留在内存中,直到用户完成向导。 Back 可以是一个简单的例子,即在面板上隐藏当前表单并显示前一个表单。这里的问题是您的逻辑是顺序的,而不是更像是向导当前正在执行的操作的状态机,由用户选择执行的操作进行更改。
标签: .net vb.net forms winforms