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个文本框的内容是否全部都不一样,如果用这样的代码肯定不能的吧。
能否有快捷一点的方法。 展开
如果真的不行可以吧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个文本框的内容是否全部都不一样,如果用这样的代码肯定不能的吧。
能否有快捷一点的方法。 展开
4个回答
展开全部
最简单也是最提倡的做法,是把这些文本框都做成控件数组,如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本身是不提倡这么做的,而且它的效率也没有第一种高,所以我还是建议用第一种方法。
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本身是不提倡这么做的,而且它的效率也没有第一种高,所以我还是建议用第一种方法。
展开全部
你这样的要求,文本框做成控件数组最好,假设有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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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这三个键?这个问题我没太看明白。是问为什么用一个参数来判断三个键的状态吗?
这样可以么?
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这三个键?这个问题我没太看明白。是问为什么用一个参数来判断三个键的状态吗?
这样可以么?
追问
问题已补充
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把所有的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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询