我将生成一个包含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上的公共变量?
答案 0 :(得分:3)
在某种程度上,您可能会感到困惑,因为有一个表单类和一个名为ChooseTheme
的函数。该函数似乎有缺陷,因为函数返回值从未设置。
如果只有三个选项,我会尝试在第一个表单上安装一个ComboBox,以防止必须为这么小的工作使用新表单。另一种选择是检查菜单项。
要使用表单,您应该将主题选择器显示为对话框,以便用户在选择某些内容之前无法继续。这样你就可以确定他们何时做出选择并允许他们取消/中止。
在ThemeSelector表单中,您需要添加一个属性以显示其选择:
Public Property SelectedTheme As String = "Default"
由于您指示了单选按钮,因此请初始化该属性以匹配默认选项。根据他们选择的值设置值。
由于它是一个Dialog,您还需要在表单中添加Ok
和Cancel
按钮以指示它们如何退出。将DialogResult
属性分别设置为DialogResult.Ok
和DialogResult.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作为变量而不是字符串。