您现在的位置: 爱51代码网 >> 范文 >> 文章正文
vb.net关于control.tag的问题

vb.net关于control.tag的问题

Sub RecursionControl(ByVal control As Control, ByVal resize As Boolean)
        If control.HasChildren Then
            Dim c As Control
            For Each c In control.Controls
                RecursionControl(c, resize)
            Next
        End If
        If control IsNot Me Then
            With control
                If resize Then
                    Dim scale As Single = Me.Width / Val(Me.Tag)
                    Dim sp() As String = Split(.Tag, "|") '为什么会有坐标与尺寸的数据在里面?                    .Left = scale * Val(sp(0))
                    .Top = scale * Val(sp(1))
                    .Width = scale * Val(sp(2))
                    .Height = scale * Val(sp(3))
                Else
                    .Tag = .Left & "| " & .Top & "| " & .Width & "| " & .Height
                End If
            End With
        End If
    End Sub

Tag是个什么内涵都没有定义的东西,它只是随便定义一个object类型的属性而已,你可以把任何对象赋值给它。这就好像假设一个游客背一个书包,里边可能装了吃的,也可能装了杀人工具,是他自己装进去的。

因此你要全文搜索一下,看看哪里有给Tag赋值的语句,看懂这个逻辑流程(那里赋值和这里取值)。只能问你自己,别人无法告诉你。

在我们设计程序时,自然要尽可能使用“强类型”的模式来设计程序,尽可能不要设计这种费思量的垃圾属性。因为这种东西不但需要费几百倍的脑细胞来不断重温其流程,而且稍有不慎其中的数据就会在运行时不定哪一种数据情况下才崩溃在用户面前、让开发人员丢人现眼。

而如果我们使用强类型的设计,比如说我们的 MyShape 类型的图形控件定义了double类型的 Lat 和 Lng 属性,那么如果程序中某个地方有使它时犯下的错误代码,往往编译时期就能立刻检查出来,因为强类型系统就是有这个好处。可见,此时你不用什么Tag。

但是尽管如此,微软的控件仍然有万分之一的部分是使用了弱类型、甚至是运行时随意混用的属性,其中较常见的也就是Tag。

  • 上一篇文章:

  • 下一篇文章: 没有了
  • 最新文章 热点文章 相关文章
    android手机无法与eclipse或电脑
    C/C++洗牌算法源代码
    servlet技术实现用户名唯一的验证
    E-business suite system servic
    ZOJ 3700 Ever Dream 文章中单词
    TortoiseGit和msysGit安装及使用
    asp中有一段javascipt的网页鼠标
    sharepoint 2010 获取用户信息Us
    设计包含max函数的队列
    随机从数组中取出指定的不重复的
    ZOJ 3700 Ever Dream 文章中单词
    TortoiseGit和msysGit安装及使用
    sharepoint 2010 获取用户信息Us
    mysql主从同步延迟方案解决的学习
    生日旅行总结
    中小板生日快乐随感
    送生日快乐桑葚乳酪小蛋糕
    写给女儿的生日快乐
    总分公司财务核算
    恢复使用繁体字可行性研究报告
    没有相关文章
     



    设为首页 | 加入收藏 | 网站地图 | 友情链接 |