如何从另一个表单调用 public 函数
How to call a public function from another form
Frm1
包含验证代码 textbox
:
Public Function AlphabeticalOnly(ByVal Str As String) As Boolean
Dim pattern As String = "^[a-zA-Z\s]+$"
Dim reg As New Regex(pattern)
If reg.IsMatch(Str) = False Then
MsgBox(Str & " is invalid! Please enter alphabetical characters only!", MsgBoxStyle.Critical, "Error")
End If
Return reg.IsMatch(Str)
End Function
因为有很多验证,我不想在其他形式中再次重复所有代码。
Private Sub btnDone_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDone.Click
If AlphabeticalOnly(txtName.Text) = False Then
Exit Sub
End If
...
End Sub
我用另一种形式尝试了上面的代码,但错误列表显示未声明AlphabeticalOnly
。
我需要在我的代码中添加什么吗?
首先,不要把函数放在形式上。如果它是所有表单共享的公共代码,请将其放在自己的 class 文件中。
其次,此通用代码不应使用消息框提示用户。这个函数 应该 只执行逻辑,仅此而已。 (这也使功能更容易进行单元测试。)然后允许使用代码(在本例中为表单)与用户交互。 (特别是因为当前的实现检查了两次匹配,这是没有必要的。)
由于此函数不依赖于对象状态,您可以将其设为Shared
。像这样:
Public Class CommonFunctions
Public Shared Function IsAlphabeticalOnly(ByVal Str As String) As Boolean
Dim pattern As String = "^[a-zA-Z\s]+$"
Dim reg As New Regex(pattern)
Return reg.IsMatch(Str)
End Function
End Class
然后在您的表单上您可以调用该函数:
If CommonFunctions.IsAlphabeticalOnly(txtName.Text) = False Then
MsgBox(Str & " is invalid! Please enter alphabetical characters only!", MsgBoxStyle.Critical, "Error")
End If
Frm1
包含验证代码 textbox
:
Public Function AlphabeticalOnly(ByVal Str As String) As Boolean
Dim pattern As String = "^[a-zA-Z\s]+$"
Dim reg As New Regex(pattern)
If reg.IsMatch(Str) = False Then
MsgBox(Str & " is invalid! Please enter alphabetical characters only!", MsgBoxStyle.Critical, "Error")
End If
Return reg.IsMatch(Str)
End Function
因为有很多验证,我不想在其他形式中再次重复所有代码。
Private Sub btnDone_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDone.Click
If AlphabeticalOnly(txtName.Text) = False Then
Exit Sub
End If
...
End Sub
我用另一种形式尝试了上面的代码,但错误列表显示未声明AlphabeticalOnly
。
我需要在我的代码中添加什么吗?
首先,不要把函数放在形式上。如果它是所有表单共享的公共代码,请将其放在自己的 class 文件中。
其次,此通用代码不应使用消息框提示用户。这个函数 应该 只执行逻辑,仅此而已。 (这也使功能更容易进行单元测试。)然后允许使用代码(在本例中为表单)与用户交互。 (特别是因为当前的实现检查了两次匹配,这是没有必要的。)
由于此函数不依赖于对象状态,您可以将其设为Shared
。像这样:
Public Class CommonFunctions
Public Shared Function IsAlphabeticalOnly(ByVal Str As String) As Boolean
Dim pattern As String = "^[a-zA-Z\s]+$"
Dim reg As New Regex(pattern)
Return reg.IsMatch(Str)
End Function
End Class
然后在您的表单上您可以调用该函数:
If CommonFunctions.IsAlphabeticalOnly(txtName.Text) = False Then
MsgBox(Str & " is invalid! Please enter alphabetical characters only!", MsgBoxStyle.Critical, "Error")
End If