窗体上有两个名称分别为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"。