vb新手问题

在vb中,有若干个textbox,名字为text1.text2.text3......textx,怎么样才能判断这些textbox.text是没有重复的,注意是全部都不一... 在vb中,有若干个textbox ,名字为 text1.text2.text3......textx ,怎么样才能判断这些textbox.text 是没有重复的,注意是全部都不一样,用like也太麻烦了吧。。。。求高手解答
如果真的不行可以吧textx换成text39
举个例子可能容易懂一点:
如图
在这个窗体中,有四个文本框对吧。
我就是想使用代码,判断这四个的Text 属性是否一样:
可以这样做:
check=false
if Text1<>text2 and text1<>text3 and text1<>text4 and text2<>text3 and text2=text4 and text3<>text4 then
check=true
end if
如果我有39个文本框,辨别这39个文本框的内容是否全部都不一样,如果用这样的代码肯定不能的吧。
能否有快捷一点的方法。
展开
 我来答
网海1书生
科技发烧友

2014-07-23 · 擅长软件设计、WEB应用开发、小程序
网海1书生
采纳数:12311 获赞数:26228

向TA提问 私信TA
展开全部
最简单也是最提倡的做法,是把这些文本框都做成控件数组,如Text1(0)、Text1(1)、Text1(2)、……Text1(n),这样的话就简单的多了,另外你的算法也要改一下:只要判断有任意两个文本框的内容相同即可,这样可以减少检测次数(比方说如果第一个和第二个的内容相同,那么check=false,剩下的就不用再检测了是吧?)

Dim i As Integer, j As Integer, check As Boolean
check = True
For i = Text1.LBound To Text1.UBound - 1
For j = i + 1 To Text1.UBound
If Text1(i).Text = Text1(j).Text Then
check = False
Exit For
End If
Next
If Not check Then Exit For
Next

如果不是控件数组,那就复杂得多了,而且处理流程会显得很不规范、很不专业,首先这些文本框的命名一定要同一个规律,而且不能断码,比如:Text1、Text2、Text3、……Text39
Dim i As Integer, j As Integer, check As Boolean
check = True
For i = 1 To 38
For j = i + 1 To 39
If Me.Controls("Text" & i).Text = Me.Controls("Text" & i).Text Then
check = False
Exit For
End If
Next
If Not check Then Exit For
Next
看上去你可能觉得代码比上面的还少,但这是一种非正规的用法,VB本身是不提倡这么做的,而且它的效率也没有第一种高,所以我还是建议用第一种方法。
百度网友bdb9803
2014-07-23 · TA获得超过1.1万个赞
知道大有可为答主
回答量:1.1万
采纳率:53%
帮助的人:1亿
展开全部

你这样的要求,文本框做成控件数组最好,假设有39个文本框,就是Text1(0)~Text1(38),判断是否重复的语句是:

For i = 0 To 38
For j = 0 To 38
If i <> j And Text1(i).Text = Text1(j).Text Then
  MsgBox "Text1(" & i & ")的内容与Text1(" & j & ")的内容完全相同。"
End If
Next
Next
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
舒适还明快的小赤子2277
2014-07-23 · TA获得超过259个赞
知道答主
回答量:114
采纳率:0%
帮助的人:112万
展开全部
VBXXXMask 这些是常数,它们的值就是那些数字,即
vbShiftMask = 1
vbCtrlMask = 2
vbAltMask = 4
之所以这么做,是为了增加程序的可读性,如果写1、2、4这些数字的话,谁知道它们是什么意思呢?是1只羊还是2头牛?而用常数就不同了,只要稍懂英语(当然电脑也要懂些)的人就可以看出
vbShiftMask就是shift键的意思。比如你可以比较一下下面两个语句哪个更容易看懂:
If Shift = 6 Then Msgbox "Ctrl和Alt键被按下"
If Shift = vbCtrlMask + vbAltMask Then Msgbox "Ctrl和Alt键被按下"
vb两个字母表示这个常数是VB内部定义好的,你可以直接拿来使用,不用自己定义的。当然,你不用常数直接用数字也是可以的,随你喜欢

为什么用SHIFT判断SHIFT、CTRL、ALT这三个键?这个问题我没太看明白。是问为什么用一个参数来判断三个键的状态吗?
这样可以么?
追问
问题已补充
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
piestkj
2014-07-23 · TA获得超过928个赞
知道小有建树答主
回答量:820
采纳率:0%
帮助的人:614万
展开全部

把所有的TextBox的名字全部改为相同的,然后再给它们的Index属性分别设置为1,2,3,...39.

然后代码是:

Dim i As Integer
Dim j As Integer
Check = False
For i = 1 To 39
    For j = i + 1 To 39
        '假设TextBox空间的名字全部为txtText,并且Index属性已经设置好
        If txtText(i).Text <> txtText(j).Text Then Check = True
    Next j
Next i
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式