| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1564 人关注过本帖
标题:[求助]查找文本中关键字,却没有选中?为什么?一个VB超级菜鸟学习问题之1
只看楼主 加入收藏
king197810
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2007-6-8
收藏
 问题点数:0 回复次数:11 
[求助]查找文本中关键字,却没有选中?为什么?一个VB超级菜鸟学习问题之1

这一久突然对斗地主很感兴趣,人又很喜欢钻牛角尖,每一局打错了的牌局,都想研究一下错在那点?
如果改成另一种出牌方法,结果又会怎么样?于是就想找个可以帮助分析牌局的软件.
在网上搜了半天都没有找到我想要的东西.最后决定自己学程序语言,自己动手写一个。呵呵,知道不容易,特别是对我这个对程序语言一窃不通的人而言(大学时学FORTRAN还没有出校门就还给老师了).但相信也不太难的.

呵呵,今天我的VB教程已经学到第十课了(宁波电大黄文老师的视频教程,共29课),有点生涩,但还是要坚持。为自己加油吧!

今天跟着老师的实例做了一个在Text1中查找关键字,并把关键选中的例子。却没有成功,很郁闷,特此上论坛来向各位大虾请教,那位大虾如果路过,请高抬贵手,不吝指教。您的解惑是对一个菜鸟学习的最大支持,先谢过了:

代码如下:
Dim Findstr As String
Findstr = InputBox("请输入要查找的关键字!")
Dim Findaddr As Integer
Findaddr = InStr(Text1.Text, Findstr)
If Findaddr >= 0 Then
Text1.SelStart = Findaddr - 1
Text1.SelLength = Len(Findstr)
Else
MsgBox "没有查找到你要查找的字符"
End If

End Sub

Private Sub Form_Load()
Text1.Text = "如果能看透聚散分离,我想我会更擅长安慰伤心;陪朋友唱了一夜失恋人唱的歌曲,我要伤心,但不忍离去!"
End Sub

当输入“失恋”时,没有选中Text1文本中的“失恋”关键词,这是为什么?
而输入“king”时,报错,调试指向此语句:Text1.SelStart = Findaddr - 1为什么?

[此贴子已经被作者于2007-6-23 14:13:40编辑过]

搜索更多相关主题的帖子: 文本 关键 超级 
2007-06-23 14:11
ouzhiguang
Rank: 1
来 自:湖南长沙
等 级:新手上路
威 望:1
帖 子:240
专家分:0
注 册:2007-5-18
收藏
得分:0 
晕死
If Findaddr >= 0 Then
改成
If Findaddr > 0 Then
就行了
instr(a,b)
的用法是在字符串a中出现字符b的第一个位置
如果instr(a,b)=0则说明没找到
我的解释不知道你明白了没?
2007-06-23 14:27
king197810
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2007-6-8
收藏
得分:0 
以下是引用ouzhiguang在2007-6-23 14:27:55的发言:
晕死
If Findaddr >= 0 Then
改成
If Findaddr > 0 Then
就行了
instr(a,b)
的用法是在字符串a中出现字符b的第一个位置
如果instr(a,b)=0则说明没找到
我的解释不知道你明白了没?


谢谢您的解答,但我按你说的改了,还是没有反应哦....恳请再次解答!谢谢
2007-06-23 18:18
Joforn
Rank: 6Rank: 6
等 级:贵宾
威 望:23
帖 子:1242
专家分:122
注 册:2007-1-2
收藏
得分:0 
'出现这种情况是因为窗体当前焦点不在Text1控件上(你点击Button后焦点在Button上),你在Selstart之前加上SetFocus就可以了
If Findaddr Then
Text1.SetFocus
Text1.SelStart = Findaddr - 1
Text1.SelLength = Len(Findstr)
Else
MsgBox "没有查找到你要查找的字符"
End If


VB QQ群:47715789
2007-06-23 19:30
缘子弹
Rank: 1
等 级:新手上路
帖 子:184
专家分:0
注 册:2007-4-5
收藏
得分:0 
楼上斑竹很细心!

2007-06-23 19:33
king197810
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2007-6-8
收藏
得分:0 
以下是引用Joforn在2007-6-23 19:30:03的发言:
'出现这种情况是因为窗体当前焦点不在Text1控件上(你点击Button后焦点在Button上),你在Selstart之前加上SetFocus就可以了
If Findaddr Then
Text1.SetFocus
Text1.SelStart = Findaddr - 1
Text1.SelLength = Len(Findstr)
Else
MsgBox "没有查找到你要查找的字符"
End If

哈哈,太谢谢了!我这张求助贴同时还发在http://www.vbgood.com上,没有解决,还被一个专家嘲笑哦!无语。。。。谢谢Joforn版主!很喜欢这里的氛围!呵呵!
不过不是太明白SetFocus具体是什么意思!能否具体解释一下它的作用及用法。

[此贴子已经被作者于2007-6-24 0:57:50编辑过]

2007-06-24 00:54
缘子弹
Rank: 1
等 级:新手上路
帖 子:184
专家分:0
注 册:2007-4-5
收藏
得分:0 
SetFocus就是设置焦点.当你把鼠标定在text1里面的时候,是不是有个光标在闪烁?这就证明焦点在text1上.
当你鼠标离开text1点击其他控件的时候,焦点就很自然地...悄悄地离开了text1...

[此贴子已经被作者于2007-6-24 1:55:23编辑过]


2007-06-24 01:54
slore
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:1108
专家分:0
注 册:2005-7-1
收藏
得分:0 
有没有测试?

我发现中文Sel系列有问题……(如果start是5,2个中文才算1……len也是的。)
Private Sub Command1_Click()
Text1 = "我是测试语句测试语句是我"
Text1.SetFocus
Text1.SelStart = 2
Text1.SelLength = 2
End Sub

换成纯e文就好了。

快上课了……
2007-06-24 10:28
缘子弹
Rank: 1
等 级:新手上路
帖 子:184
专家分:0
注 册:2007-4-5
收藏
得分:0 

VB是外国的东西,自然对中文不敏感!中国同胞们,我们要努力啊!~
等咱中国强大了,全叫老外考中文四六级!
文言文太简单,全用毛笔答题,这是便宜他们。
惹急了一人一把刀一个龟壳,刻甲骨文!
论文题目就叫:论三个代表!
到了考听力的时候全用周杰伦的歌,《双截棍》听两遍,《菊花台》只能听一遍。
告诉他们这是中国人说话最正常的语速!阅读理解全是政府工作报告。作文就是申论 。
考死他们....


2007-06-24 11:42
Joforn
Rank: 6Rank: 6
等 级:贵宾
威 望:23
帖 子:1242
专家分:122
注 册:2007-1-2
收藏
得分:0 
以下是引用slore在2007-6-24 10:28:21的发言:
有没有测试?

我发现中文Sel系列有问题……(如果start是5,2个中文才算1……len也是的。)
Private Sub Command1_Click()
Text1 = "我是测试语句测试语句是我"
Text1.SetFocus
Text1.SelStart = 2
Text1.SelLength = 2
End Sub

换成纯e文就好了。

VB中字符串用的是Unicode编码,如果上面的代码加亮的是第一个“测试”那就是正确的。如果不是的话那就是电脑出毛病了。


VB QQ群:47715789
2007-06-24 13:04
快速回复:[求助]查找文本中关键字,却没有选中?为什么?一个VB超级菜鸟学习问题 ...
数据加载中...
 
   



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

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