liu6’s blog

通过名称获得控件

今天遇到了一个问题,有十个控件,名称很类似,只是尾数不同.操作也是一样的,只是各个取得数据的条件不同.但是事件还是一样的.一个个单独的去写有些繁琐.比较方便的办法就是把他们作为整体去处理.在赋值和读数据的时间使用循环操作.

而这时,利用控件的名字获得控件就是一个很重要的环节了.

”’ <summary>
”’ 根据名称取得控件
”’ </summary>
”’ <param name="Name">控件名</param>
”’ <param name="CurrentForm">窗体</param>
”’ <returns></returns>
”’ <remarks></remarks>
Private Function GetControlByName (ByVal Name As String, ByVal CurrentForm As Form) As Control
    Dim info As FieldInfo = _
            CurrentForm.GetType().GetField("_" & Name, _  “”此处的下划线让我郁闷了
                                            BindingFlags.NonPublic Or _
                                            BindingFlags.Instance Or _
                                            BindingFlags.Public Or _
                                            BindingFlags.IgnoreCase)
    Dim a As Object = CurrentForm.GetType.GetMembers()
    Dim files As System.Reflection.FieldInfo() = CurrentForm.GetType.GetFields()
    If Not info Is Nothing Then

        Return CType(info.GetValue(CurrentForm), Control)
    End If
    Return Nothing
End Function

这里有点不一样的就是在控件名称前面要加上一个”_”这个可能是和C#.NET的区别吧.中反射的时间,会在所有控件前面加一个”_”,至于这其中的用意,不是很理解.不过,本身就很怪异了.

bookmark

Related posts


[版权声明: 个人 Blog 转载请遵循 CC 协议,商业网站不得复制本站内容]
如果你喜欢本文,你可以通过 RSS或者 订阅本站的最新文章,谢谢!

One Comment, Comment or Ping

  1. 反射|liu6’s blog - Jul 12th, 2008

Reply to “通过名称获得控件”

订阅

推荐朋友们利用Feed来关注注本站内容,以更佳体验来得信息:

Services


del.icio.us Gmail/Google Talk Last.fm LinkedIn Picasa Web Albums StumbleUpon Twitter

ADs

Before you go

Going so soon? May these links be a guide to web enlightenment. Schwing!

    Akismet

    Partner links