VB编程问与答

   1.如何让文本框只接受数字?
    答:使用如下代码,在文本框的按键事件中加入:
    PrivateSubText1_KeyPress(KeyAsciiAsInteger)
    ′KeyAscii32以下是一些控制键。
    If KeyAscii>=33Then
    If KeyAscii<=vbKey9AndKeyAscii>=vbKey0Then
    Else
    ′把KeyAscii设为0就是取消输入。
    KeyAscii=0
    MsgBox″不要输入数字e
    EndIf
    EndIf
    EndSub
    注意:KeyAscii键值与KeyCode相同,我们可以查看KeyCode值,不过有些Keycode键值必须在KeyDown和KeyUp中才有效,在KeyPress的KeyAscii中没用。利用KeyAscii=0的方式在KeyPress中有用,但在KeyDown中让KeyCode=0就不行了。
    2.VB中的进制转换是怎样的?
答:用函数Oct()将十进制位数转换为八进制,用Hex()将十进制位数转换为十六进制,不过值得注意的是转换后数字型变为字符型。如果是一个变量我们可以用如下代码完成十进制向其他进制转换的目的。
    dim ANumaslong
    ANum=&O10′&O是八进制的表示符号ANum自行转换为8。
    ANum=&HA′&H是十六进制的表示符号ANum自行转换为10。
    如果我们有一个字符变量Astring为八进制的或十六进制的,用ANum=″&O″+Astring和ANum=″&H″+Astring能将它转换为十进制。
    VB中我没有找到二进制的转换函数,用如下代码可以实现十进制到二进制的转换。
    OptionExplicit
    Private Function TenturnTwo(ByValvarNumAsLong)  
     Dim returnStringAsString,ModNumAsInteger
    Do WhilevarNum>0
    ModNum=varNumMod2
    varNum=varNum\2
    returnString=Trim(Str(ModNum))+returnString
    Loop
    TenturnTwo=returnString
    End Function
    Private Function TwoturnTen(ByValvarStringAsString)
    DimSLenAsLong,I As Long,returnNumAsLong
    SLen=Len(varString)
    ForI=0ToSLen-1
    returnNum=returnNum+Val(Mid(varString,I+1,1))*(2^(SLen-I-1))
    Next
    TwoturnTen=returnNum
    End Function
    3.在VB50下,如何用程序改变中文与英文的输入方式?
    答:VB50在可以输入文字的地方(如TextBox,ListBox,ComBox等)有一个输入法切换属性IMEMode。我们可以先用ImeStatus函数来检测当前的输入状态,并用IMEMode来控制其输入状态。
    下面是IMEMode的属性值。
    Text1IMEMode=0(预定值)
    Text1IMEMode=1(切换为中文输入)
    Text1IMEMode=2(切换为英文输入)
    Text1IMEMode=3(关闭中文输入的功能,也就是只能做英文输入。)(陕西   李惠萍)