控制功能参数

时间:2014-06-25 19:20:47

标签: .net vb.net function parameters controls

我需要创建一个函数,我可以在参数中传递一个控件,然后检入 一个选择案例陈述是什么控制它并为每个特定控件重新特定一个特定的字符串:

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

这是我的尝试。 但是我得到了这些错误:

enter image description here

有人能帮助我吗?

2 个答案:

答案 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