Я кодирую что-то, что работает как волшебник, но я не уверен, как это сделать.. NET WinForms - кнопка «Назад»
У меня есть несколько форм. Каждый из них делает что-то другое, что зависит от данных из предыдущей формы. Существует «Мастер-форма», которая получает вход от каждого и передает его другому. Обычно я просто использую form.ShowDialog(), жду ввода, создаю экземпляр следующей формы и повторяю. Однако на этот раз пользователю нужно время от времени возвращаться к предыдущей форме.
Я закодировал что-то очень простое с заявлениями «GoTo», чтобы вы могли понять проблему. Да, это работает, но мне интересно, есть ли лучший способ сделать это. Я застрял в этой проблеме какое-то время, поэтому любая помощь будет очень оценена!
TestForm:
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
Формы могут быть встроены в контейнеры в другой форме. Способ, которым я хотел бы заняться этим, заключается в том, чтобы создать экземпляр каждой формы в свою очередь, когда страница приземлилась, но затем оставить их в памяти, пока пользователь не закончит мастер. Назад может быть простым случаем скрытия текущей формы на панели и отображения предыдущей. Проблема здесь заключается в том, что ваша логика является последовательной, а не более похожей на конечный автомат того, что делает мастер в данный момент, измененный тем, что пользователь хочет сделать. –