liu6’s blog

.NET的事件绑定

在.NET平台下,事件的绑定可以说是不得不经常面对的一件事情.当然绝大多数时间,这些操作都是由VS自动完成的.这些操作一般会在初始化的时间完成.之后就不会在执行了..NET的强大之处就是,既可以很自动化,又可以让你完全掌控.事件的处理也是一样,可以自己编写这部分的代码.给所有控件的keydown事件做同样的操作.当然,实现这个也有很多种方法.不过,总有一种最简洁的.

Private Sub TabHandleEnter(ByRef controls As Control.ControlCollection)
    For Each ctl As Control In controls
        If ctl.GetType.Name.Equals("GroupBox") Or ctl.GetType.Name.Equals("Panel") Then
            TabHandleEnter(ctl.Controls)
        Else
            AddHandler ctl.KeyDown,AddressOf EnterKeyDown
        End If
    Next
End Sub

这样就写一个EnterKeyDown,就可以处理所有的控件的keydown事件了.不过,这个函数有一个小问题,就是AddHandler ,C#里面绑定事件的操作符是+=.如果说这个操作符意味了什么的话啊,也就是你不能绑定两次,当然除非你有这方面的特别需求.你每执行一次.你绑定的函数在被激发的时间就会都走一次…所以,一定要确保绑定时间的时间,只被绑定一次.

项目

最近进行的一个项目是的,自己也是第一次接触这个东西.来日本之后接触的都是自己以前没有用过的,貌似以前自己只接触过C#,C++和MATLAB了.

前一个Java也就不提了,很恶心.这次还好是.net平台,而且开始之前照例看了段时间的msdn.一个平台下的东西,很多东西实现起来都差不多.只不过VB本来就很神奇,需要一段时间来适应.不过,今天忽然发现,自己虽然已经适应了,可是自己担当的部分也快差不多了…

本来开始的时间也是慢有激情的,:)可是总是有这样那样的问题困扰着你,资历,语言,环境,领导…慢慢的也就被磨平了…经过几次折腾之后,也就无所谓了.做好自己的就okay了.其他的,能帮就帮吧.:)

比较神奇,如果是我,选择了.net平台的话,我绝对会去使用C#的,虽然可能没有快速,不过,踏实得很!

Enter激活Tab事件

最近做项目遇到了一个比较bt的问题,就是客户要求按Enter的时间实现Tab键的效果.而且还要跳过button之类的东东. 最后用了三个函数来解决了.在load的时间调用第一个函数就好了.如果页面有其他的容器,自己参照myGetNextControl添加一个case就好了

VB是个很神奇的语言,在很多时间继承了这些神奇的地方.

    Private Sub TabHandleEnter(ByRef controls As Control.ControlCollection)
        For Each ctl As Control In controls
            If ctl.GetType.Name.Equals("GroupBox") Or ctl.GetType.Name.Equals("Panel") Then
                TabHandleEnter(ctl.Controls)
            Else
                AddHandler ctl.KeyDown, AddressOf EnterKeyDown
            End If
        Next

    End Sub
    ''' <summary>
    ''' 按下Enter时的处理
    ''' </summary>
    Private Sub EnterKeyDown(ByVal sender As Object, ByVal e As KeyEventArgs)

        If Not e.Shift And e.KeyCode = Keys.Enter Then
            myGetNextControl(CType(sender, Control), True)
        ElseIf e.Shift And e.KeyCode = Keys.Enter Then
            myGetNextControl(CType(sender, Control), False)
        End If
    End Sub
 

    Private Sub myGetNextControl(ByVal ctl As Control, ByVal forward As Boolean)
        Dim vControl As Control = GetNextControl(ctl, forward)
        If vControl Is Nothing Then Exit Sub

        If Not "SKIP".Equals(vControl.AccessibleName) And vControl.Enabled And vControl.Visible Then
            Select Case vControl.GetType.Name
                Case "GroupBox"
                    myGetNextControl(vControl, forward)
                    Exit Sub
                Case "Panel"
                    myGetNextControl(vControl, forward)
                    Exit Sub
                Case "RadioButton"
                    If CType(vControl, RadioButton).Checked Then
                        vControl.Focus()
                        Exit Sub
                    Else
                        Exit Select
                    End If
                Case "Label"
                    Exit Select
                Case Else
                    vControl.Focus()
                    Exit Sub
            End Select
        End If
        myGetNextControl(vControl, forward)

    End Sub
 
如果只是简单的把Enter替换成Tab的话,把第二个函数的内容换成发送一个tab键就okay了!

VisualBasic常函数一览

有点无聊,我承认这点.C#用得多了.OO用多了.对于还真很无奈…Microsoft.VisualBasic 命名空间下面这些函数,掌握了,就可以省去不少麻烦了…

把MSDN上这个命名空间下的函数多搜罗了一边.学习了下,下面是学习笔记…

关于I/O的没写,有空专门写.

AppActivate

激活已经在运行的程序,参数是应用程序的Title 或者是sid

Beep

不多说了,很原始的声音…

CType

啥也不说了,我开始把这个作为唯一的转换函数在用,J通用的还是觉得好些.

DateAdd , DateDiff, DatePart , DateSerial , DateValue, Day,Hour,Month,Minute, MonthName,Second, TimeSerial ,TimeValue, Weekday, WeekdayName ,Year

这几个函数,不言而喻,多是跟日期有关的. DatePart是获得一个日期的相关信息的,诸如,日期所在的季度,一周第几天等等. DateSerial 就是生成一个Date,不过参数是把年月日分开了而已.

Format FormatCurrency FormatDateTime FormatNumber FormatPercent

见名知意,格式化字符串的.

IIF

我的最爱了,可以节省不少空间…

IsArray IsDate IsDBNull IsError IsNothing IsNumeric IsReference

判断一个对象的类型,数据验证的时间用得上!

Join

给一个数组后面增加一个字符串的元素.

Kill

用这个就可以自己删除文件了…

LBound和UBound

用这个得到数组的最小可用下标和最大可用上标

LCase 和UCase

将字符串转换成小写或大写

LSet 和RSet

返回包含调整为指定长度的指定字符串的左对齐字符串,如超过字符串的长度的话,补空格

Mid

就是把String,SubString给提取出来了,

MsgBox

这个没啥说的了

Partition

这个函数相当有意思.

Partition(ByVal Number As Long,ByVal Start As Long,ByVal Stop As Long,ByVal Interval As Long _) As String

在一个大的范围内找到一个最适合的范围…比方,有一系列的员工id,100为一组.我想找到任意一个ID所在的组.用这个函数,就轻而易举了. Partition(id,0,10000,100).这样就okay了.

Randomize

用来初始化随机数的,Rnd是里面的随机数,和其他语言一样,都是伪随机数.用这个可以稍微避免.其实那个参数,我觉得实在是没有必要.函数默认用系统计时器来生成的.不过有特殊需要的不说这个了.

Right和Left

截取字符串的

Rnd

没法说,继续保持了的那种明明风格.一如既往的缩写.

Trim、LTrim 和 RTrim

见名知意

SaveSetting

可以往万恶的注册表写信息

Shell

用来运行一个程序,如果已经启动,则返回Sid

Space

生成指定数量的空格

Split

分割字符串的

Str

强制转换成String

StrComp

比较比较字符串的

StrConv

这个函数比较强悍,字符的一些转换的.大小写,全半角,日文的平假片名的转换,繁简的转换.很强大.

StrDup

讲一个字符串重复N次

StrReverse

翻转字符串

Switch

Switch简化的Switch语句.类似oracle的decode函数

SystemTypeName

获得变量的数据类型

TypeName

获得数据类型

Val

也是一个比较神奇的函数.用来把字符串转换成数字的,但不要求所有字符串全部都是数字.遇到的第一个不是数字的时间停止转换.

VarType

返回变量的类型,只是返回值的类型为VariantType

VbTypeName

VbTypeName 返回对应于公共语言运行库类型名称的 Visual Basic 类型名称

ps:

最近练习双拼ing,感觉还行…

一周总结

这一周过得挺快的,新的项目已经开始了.是的,还好前段时间自己准备了下,还好都是.NET平台的,所以无所谓了.其实就是一些语法的转换,关键词的变换.然后也就差不多了.再就是一个习惯的过程.不过的确很方便,特别是在了解了他的sub和function的区别之后,这两个东西用起来还是相当的方便的.
项目里面没有SE,所以,感觉有点苦闷.PM让我和另外两个人先做出来一个sample.感觉还算可以了,不是很紧.想挣加班费,可是没有合理的理由,每天都是定时离开公司.唉,还是等大家都忙了,在一块加班了.呵呵
日本这边的天气也越来越热了.还好到处都有空调,而且在外面的时间很少,所以也就无所谓了.其实,晒太阳的时间都很少,恨事郁闷.周六去买菜的时间好好的晒了晒太阳.那家超市这次太太火爆了,排了半天的队,在国内也只有在春运的时间见过这样的阵势.而且站在自己前边的一位大爷,打扮的很想忍者.很搞…不过,本来以为又有什么活动呢,所以这么多人,最后进去的时间,发现菜还是那样.不过,周六88的鸡蛋还是在的.呵呵,可以说这是每周六去那里最重要的原因了…

反射

前些天用到了反射,反射往简单了说就是和定于对象相反的一个过程.所以通过反射得到的就是一个对象,模块,程序集的类型了.就是这么简单的一个东西.不过,里来越是简单的东西,越是复杂.呵呵,就是?:这个三元运算符一样.下面是很简单的一个例子.

String strPar = "hello Word";
System.Type type = strPar.GetType();
System.Console.WriteLine(type);

那么会在什么时间用到这个很”简单”的东西呢?这样说吧,你知道一个对象的名称,却苦于无法让他出现在等号左边.这种情况一般就是一些控件,他们的名字很是类似.这样,把A.b=1;重复的写十遍肯定是没有任何意义的.

还有一种状况就是你想写一个泛型的时间,可能会出现很多种状况.这个时候,就可以利用反射,来确保每种类型都得到他应有的操作.

至于如何利用的语法,可以参考前些天做的一个小东西.不过和C#在这里有个小区别,控件名称之前多了”_”.dbug的时间可以进去看看,里面的确是这样.很无奈,不太清楚为什么要做成这样的效果.不过,注意下就好了.

Page 1 of 212»

订阅

推荐朋友们利用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