保存新表单中的用户选择

时间:2016-09-23 14:17:59

标签: .net vb.net winforms

我将生成一个包含3个可能主题的PDF,因此我需要向用户显示一个带有3个单选按钮的表单来选择一个。

在我的Form1上

使用

SelectedTheme = ChooseTheme()

我称这个函数

Private Function ChooseTheme() As String
    Dim formChooseTheme = New ChooseThemeForm()
    formChooseTheme.Show()
    Return ChooseTheme
End Function

Form ChooseTheme()是带有3个单选按钮和一个带有此代码的cmd按钮:

Public Class ChooseTheme
Private Sub cmdChoose_Click(sender As Object, e As EventArgs) Handles cmdChoose.Click

    If optNormal.Checked = True Then Theme = "Normal"
    If optElegante.Checked = True Then Theme = "Elegant"
    If optModerno.Checked = True Then Theme = "Modern"
    Me.Close()
End Sub
End Class

但我无法使其发挥作用。我很困惑在哪里以及如何定义(DIM)主题或/和ChooseTheme变量。作为Form1上的公共变量?

1 个答案:

答案 0 :(得分:3)

在某种程度上,您可能会感到困惑,因为有一个表单类和一个名为ChooseTheme的函数。该函数似乎有缺陷,因为函数返回值从未设置。

如果只有三个选项,我会尝试在第一个表单上安装一个ComboBox,以防止必须为这么小的工作使用新表单。另一种选择是检查菜单项。

要使用表单,您应该将主题选择器显示为对话框,以便用户在选择某些内容之前无法继续。这样你就可以确定他们何时做出选择并允许他们取消/中止。

对话框表格

在ThemeSelector表单中,您需要添加一个属性以显示其选择:

Public Property SelectedTheme As String = "Default"

由于您指示了单选按钮,因此请初始化该属性以匹配默认选项。根据他们选择的值设置值。

由于它是一个Dialog,您还需要在表单中添加OkCancel按钮以指示它们如何退出。将DialogResult属性分别设置为DialogResult.OkDialogResult.Cancel

使用对话框

' local var to hold the current theme
Private PDFTheme As String
...

' code to get selection
Using dlg As New frmThemeSelector
    If dlg.ShowDialog() <> DialogResult.Cancel Then
        PDFTheme = dlg.SelectedTheme
    End If
End Using

另请注意,使用ShowDialog显示的表单在关闭时不会自动处理,您需要这样做。上面的代码使用Using块来处理它。如果您需要old data settings cleared when you use it again,这可能很重要。

我还建议使用PDFStyle Enum作为变量而不是字符串。