| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 856 人关注过本帖
标题:[讨论][求助]该输出几个A?(已解决,谢谢大家)
只看楼主 加入收藏
水无波
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-8-2
收藏
 问题点数:0 回复次数:11 
[讨论][求助]该输出几个A?(已解决,谢谢大家)

今天遇到这样一个问题:
窗体上画一文本框,编写代码如下:
###############################################
Private Sub Text1_KeyPress(KeyAscii As Integer)
Dim str As String
str = Chr(KeyAscii)
KeyAscii = Asc(UCase(str))
Text1.Text = String(2, KeyAscii)
End Sub
#################################################
问:程序运行后,按字母“a”,文本框中显示的内容是什么?

我只知道 Text1.Text = String(2, KeyAscii) 这句代码中的string语句产生2个A,所以文本框中显示的内容应该是AA,才对吧?! 可程序运行结果是3个A,即 "AAA"。

希望热心的朋友给我点点拨,在这里先谢谢了!
..........................................................
问题明白了,谢谢大家了啊!

[此贴子已经被作者于2007-8-2 12:43:26编辑过]

搜索更多相关主题的帖子: 输出 
2007-08-02 10:42
slore
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:1108
专家分:0
注 册:2005-7-1
收藏
得分:0 
你本身输入的A

[此贴子已经被作者于2007-8-2 10:57:01编辑过]



快上课了……
2007-08-02 10:52
水无波
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-8-2
收藏
得分:0 
以下是引用slore在2007-8-2 10:52:40的发言:
你把A键松开后……输入的A

可最后一句是赋值语句啊,text1.text被赋值为2个A的啊!刚才的不保留了吧?

2007-08-02 10:55
Joforn
Rank: 6Rank: 6
等 级:贵宾
威 望:23
帖 子:1242
专家分:122
注 册:2007-1-2
收藏
得分:0 
Private Sub Text1_KeyPress(KeyAscii As Integer)
Dim str1 As String
str1 = UCase(Chr(KeyAscii))
Text1.Text = String(2,str1) '或是注释掉下面一行,把这里改成Text1.Text = str1:KeyAscii=Asc(str1)
KeyAscii = 0
End Sub

因为在KeyPress事件激活时,文本框还没有把KeyAscii所代表的字符输出,但你在代码中使用了Text1.Text = String(2, KeyAscii),也就是说文本框在自动将你输入的字符“A”显示前已经被修改成“AA”,当KeyPress事件结束后,由于KeyAscii变量返回了一个“A”,所以文本框自动在“AA”后添加一个字符“A”,也就成了“AAA”了。

[此贴子已经被作者于2007-8-2 10:59:40编辑过]


VB QQ群:47715789
2007-08-02 10:58
slore
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:1108
专家分:0
注 册:2005-7-1
收藏
得分:0 
Private Sub Text1_KeyPress(KeyAscii As Integer)
KeyAscii = 65
Text1 = String(2, "*")
End Sub

你看看。。。。你输入的是在End Sub后才显示的……本身你按下后出现的是**,然后这个过程结束后才出现你KeyAscii

快上课了……
2007-08-02 11:00
水无波
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-8-2
收藏
得分:0 
明白了!谢谢大家! 。。。。。不对啊。。。。。。。

[此贴子已经被作者于2007-8-2 13:02:43编辑过]


2007-08-02 12:42
水无波
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-8-2
收藏
得分:0 
以下是引用Joforn在2007-8-2 10:58:00的发言:

因为在KeyPress事件激活时,文本框还没有把KeyAscii所代表的字符输出,但你在代码中使用了Text1.Text = String(2, KeyAscii),也就是说文本框在自动将你输入的字符“A”显示前已经被修改成“AA”,当KeyPress事件结束后,由于KeyAscii变量返回了一个“A”,所以文本框自动在“AA”后添加一个字符“A”,也就成了“AAA”了。

你的说法不完全正确,我刚刚试了试,我输入的字符在前面,后面俩个是string语句显示出来的。

2007-08-02 12:57
slore
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:1108
专家分:0
注 册:2005-7-1
收藏
得分:0 
在什么位置由焦点决定,你按的时候应该是在开头!

至于是A不是string函数,而且前面另KeyAscii = Asc(UCase(str))……

快上课了……
2007-08-02 13:00
水无波
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-8-2
收藏
得分:0 
以下是引用slore在2007-8-2 11:00:17的发言:
Private Sub Text1_KeyPress(KeyAscii As Integer)
KeyAscii = 65
Text1 = String(2, "*")
End Sub

你看看。。。。你输入的是在End Sub后才显示的……本身你按下后出现的是**,然后这个过程结束后才出现你KeyAscii

我试了试,我按a,输出是A**, 光标在A后面闪,不是在**后面闪。 请麻烦您也试试自己的方法,帮忙给我个更好的解释好么?

2007-08-02 13:02
水无波
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-8-2
收藏
得分:0 
以下是引用slore在2007-8-2 13:00:34的发言:
在什么位置由焦点决定,你按的时候应该是在开头!

至于是A不是string函数,而且前面另KeyAscii = Asc(UCase(str))……

似乎又懂了。。。。。
我按下的时候是焦点在文本框的最前面;string语句后,文本框的内容为2个**,同时输出在屏幕上,end语句后把我按下的字母也输出到屏幕上,因为焦点在最前,所以最后这个A输出在2个**前面,光标也在紧挨A后闪,是吧?到这时候,事件结束,我才看到屏幕的结果,是A**, 这样解释比较合理了。。。应该是对的吧!
谢谢大家!

2007-08-02 13:10
快速回复:[讨论][求助]该输出几个A?(已解决,谢谢大家)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016538 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved