我需要创建一个函数,我可以在参数中传递一个控件,然后检入 一个选择案例陈述是什么控制它并为每个特定控件重新特定一个特定的字符串:
Private Function OptionInfoHover(sender As Object, e As EventArgs) As String
Select Case sender
Case sender Is TextBox1
Return "dsfsdf"
Case sender Is CheckBox3
Return "dfsdfsdf"
Case sender Is RadioButton1
Return "sfdsfrad"
End Select
End Function
这是我的尝试。 但是我得到了这些错误:
有人能帮助我吗?
答案 0 :(得分:0)
当您使用Select Case
时,您指定一个表达式,然后为该表达式的值指定一堆案例。你的代码实际上是这样的:
If sender = (sender Is TextBox1) Then
Return "dsfsdf"
ElseIf sender = (sender Is CheckBox3) Then
Return "dfsdfsdf"
ElseIf sender = (sender Is RadioButton1) Then
Return "sfdsfrad"
End If
这显然不是你想要的,反正也没有意义。基本上,您不能使用Select Case
语句来测试引用相等性;只有价值平等。这意味着您只能使用它来测试String
s,Integer
等的值。在您的情况下,您需要使用If
... ElseIf
语句,即
If sender Is TextBox1 Then
Return "dsfsdf"
ElseIf sender Is CheckBox3 Then
Return "dfsdfsdf"
ElseIf sender Is RadioButton1 Then
Return "sfdsfrad"
End If
那就是说,如果你想为每个控件做一些不同的事情,那么为什么你首先使用一个公共事件处理程序呢?它宁可打败目的。您应该使用单独的事件处理程序,然后在不进行检查的情况下了解每个事件处理程序sender
。
答案 1 :(得分:0)
如果我理解你的问题是错误的,那么请添加一些关于你想做什么的信息,以及你使用返回信息的内容。为什么它需要成为一个功能。
否则
你不需要为你想做的事做一个功能。
只需添加此代码并将所有控件的MouseHover事件放在其上。
然后使用ReturnString返回
Dim ReturnString As String
Private Sub OptionInfoHover(sender As Object, e As EventArgs) Handles TextBox1.MouseHover, RadioButton1.MouseHover, CheckBox3.MouseHover
If sender Is TextBox1 Then
ReturnString = "TextBox1"
ElseIf sender Is CheckBox3 Then
ReturnString = "CheckBox3"
ElseIf sender Is RadioButton1 Then
ReturnString = "RadioButton1"
End If
MsgBox(ReturnString)
End Sub