首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Visual Basic .net -从变量名调用过程

Visual Basic .net -从变量名调用过程
EN

Stack Overflow用户
提问于 2010-01-20 07:58:52
回答 5查看 8.2K关注 0票数 2

有没有办法在Visual Basic (.net)中用变量名调用过程?

例如,变量strColour可以是10个预定义的值之一:绿色、蓝色、黑色、白色、红色、粉色、橙色、黄色、蓝色、紫色。如何处理每一个都在它自己的Sub例程中,colgreen,colblue,colblack等等。

我可以使用大量的if..then..else和select case,但我想要的是像VBA Excel的Run "col“& strColour这样的东西

有可能吗?

EN

回答 5

Stack Overflow用户

发布于 2010-01-20 09:00:16

代码语言:javascript
复制
Private Sub Button1_Click(ByVal sender As System.Object, _
                          ByVal e As System.EventArgs) Handles Button1.Click
    Dim s As String = "one"
    CallByName(Me, s, CallType.Method) 'Subs must be public

    s = "two"
    CallByName(Me, s, CallType.Method) 'Subs must be public
End Sub

Public Sub one()
    Stop
End Sub

Public Sub two()
    Stop
End Sub
票数 6
EN

Stack Overflow用户

发布于 2010-01-20 08:00:37

通过使用反射,这是可能的。

代码语言:javascript
复制
Dim thisType As Type = Me.GetType()
Dim theMethod As Reflection.MethodInfo = thisType.GetMethod("col" & strColour, Reflection.BindingFlags.NonPublic Or Reflection.BindingFlags.Instance)

If Not theMethod Is Nothing Then
    'this, if you have parameters
    theMethod.Invoke(Me, New Object() { add your parameters here, if any })
    'this, if you don't have parameters
    theMethod.Invoke(Me)
End If
票数 4
EN

Stack Overflow用户

发布于 2010-01-20 08:05:19

我会使用select case,除非你有非常多的颜色,或者更好地将这些方法重构为一个方法。如果有必要的话,也许是一个通用的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2098130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档