请教一道VB 二级题目,

窗体上有两个名称分别为text1和text2的文本框,text1的keyup的事件过程如下:
private sub text1_keyup(keycode as integer, shift as integer)
dim C as integer
text2.text=Chr(Asc(c)+2)
End sub
当向文本框text1中输入小写字母a时,文本框text2中显示的是( )
答案有, A ,a,C,c
最新回答
海心

2020-07-22 15:27:36

1.题目抄错了。理由:①变量C未与text1_keyup事件截获的形参keycode、shift中的任何一个相联系,因此text2.text显示的Chr(Asc(C)+2)的运算结果与“在文本框text1中输入字母时”(确切地说,是“抬起按下的某个键时”)无关,所以text2.text的显示不可能是“A,a,C,c”中的任何一个;②“dim C as integer”将变量C定义为integer(同时VB将自动将未显式赋值的integer变量初始化为数值0),而紧随其后的“Text2.Text = Chr(Asc(c) + 0)”语句却对C求“ASC(C)”,犯了数据类型错误,该过程中的这个ASC(C)函数是无法执行的;③要使“当向文本框text1中输入小写字母a时,文本框text2中显示的是C”,则应修改该“private sub text1_keyup(keycode as integer, shift as integer)”过程为:

Private Sub text1_keyup(keycode As Integer, shift As Integer)
Dim C As String
C = Chr(keycode)
Text2.Text = Chr(Asc(C) + 2)
End Sub

2.“求解1102”的解释可能不妥(I'm sorry!)。理由:①正如“lsj136183”所说,如果C的值是"a"(注意:C是String型),则Asc(C)+2=99,Chr(Asc(C)+2)的结果是"c",不可能是"a";②dim C as integer 和 text2.text=Chr(Asc(c)+2) 中的两个c打没打错无所谓,因为VB中变量名大小写等效(实际上VB会自动将后续的同名变量名调整为与DIM语句的大小写一致),这点与VF相似而与VC不同;③VB的ke系列事件过程(包括keydown、keypress和keyup事件过程)中,形参keycode略有差异:keypress事件过程中的keycode包含了组合键(包括shift键、ctrl键、alt键)信息(这也许是keypress事件过程中只有形参keycode,没有形参shift的原因 );而keydown和keyup事件过程中keycode只管单一键,不管组合键,是当前所down或up的键的键码(请参看VB帮助中的“Keycode 常数”),对于字母键,形参Keycode的值等于当前所down或up的键的大写字母的ASCII码,所以,只要你down或up的是A键,不管是小写字母a或大写字母A,形参Keycode的值都是65,即大写字母A的ASCII码值,因此,变量C的值是Chr(keycode)=Chr(65)="A"(注意:C是String型),从而 Chr(Asc(C)+2)=Chr(65+2)=Chr(67)="C",所以,答案是"C"。
割了动脉喝脉动~

2021-05-25 10:45:28

keyup事件是在键盘弹起时触发的,asc函数返回的是ASCii的值,而Chr函数可以将对应的ASCII的值转化为字符。你可以在vb中试试看,我觉得是a
巷陌繁花

2021-12-04 11:32:50

题目有问题,修改一下:
private sub text1_keyup(keycode as integer, shift as integer)
dim c as integer
c=keycode
text2.text=Chr(Asc(c)+2)
End sub

答案是小写字母c
一川绿风

2023-11-19 07:17:48

1DCBA2345