| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
学习型 ASP/PHP/ASP.NET 主机 35元/年全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付
赛孚耐:软件保护加密专家身份认证令牌USB KEY  
共有 571 人关注过本帖
标题:[求助]VB中Check的具体操作思路[完全解决了,感谢!]
收藏  订阅  推荐  打印 
寻找
Rank: 2
等级:注册会员
帖子:106
积分:1172
注册:2007-3-2
[求助]VB中Check的具体操作思路[完全解决了,感谢!]

我的意思思路就是,如有label1,label2,label3,label4,分别为4个数值,如label1=50,label2=60,label3=70,label4=80,label5=100
(下面简称为L50,L60,L70,L80,L100),然后分别有3个Check控制,如Check1, 2, 3, 我想要的思路就是,如Check1为True时,L50,L60
L70,L80的数值为0或"",如Check2为True,L50和L60的数值为0或"",如Check3为True时,L80和L100的数值为0或"".总的意思就是

如Check3已经为True,那么L80和L100的数值为0或"",接着再激活Chec2为True,,L50和L60的数值也为0或""了,最后再激活Check1为True
剩下的在Check1的控制内的数值也为0或""(如L50,L60,L70,L80)为0或"".但是如果我把其中的一个Check改变为False时,Label里会
恢复没有被影响到的数值,如前面的例子,我所有数值已经为0或"",但我又把Check1改变为False,那么只返回L70。

就像一个过滤器一样,一步步过滤,当Check为真是过滤掉数据,Check为假是,返回其数据,但不返回其他Check控件中包含过滤的数据。我试过用IF....tehn..endif语句,但只能一步步过滤,返回的时候它又会全部返回。真不知如何解决。请高手帮忙!

不知道有没有说清楚,希望各位高手帮忙指教!感激,谢谢!

[此贴子已经被作者于2007-6-2 18:45:13编辑过]

搜索更多相关主题的帖子: Check  思路  True  数值  
2007-6-2 15:39
Joforn
Rank: 12Rank: 12Rank: 12
等级:贵宾
威望:21
帖子:1207
积分:12788
注册:2007-1-2

'在窗体上添加一组Label控件,名为L1,Index从0到5(共六个),一组CheckBox控件,名为Check1,Index从0到2(共三个)
Private Sub Check1_Click(Index As Integer)
Dim I As Integer, J As Integer
J = Index * 20 + 50
I = Index * 2
L1(I).Caption = IIf(Check1(Index).Value, vbNullString, J) '如果要显示0的话就把加蓝部分换成0
L1(I + 1).Caption = IIf(Check1(Index).Value, vbNullString, J + 10)
End Sub

Private Sub Form_Load()
Dim I As Integer
For I = 0 To 5
L1(I).Caption = 50 + I * 10
Next
End Sub

[此贴子已经被作者于2007-6-2 16:13:42编辑过]

2007-6-2 15:59
寻找
Rank: 2
等级:注册会员
帖子:106
积分:1172
注册:2007-3-2

谢谢2楼朋友的关注与解答,细心研究下,楼上朋友的思路。谢谢!希望能解决问题!
2007-6-2 16:07
寻找
Rank: 2
等级:注册会员
帖子:106
积分:1172
注册:2007-3-2

以下是引用Joforn在2007-6-2 15:59:11的发言:

'在窗体上添加一组Label控件,名为L1,Index从0到5(共六个),一组CheckBox控件,名为Check1,Index从0到2(共三个)
Private Sub Check1_Click(Index As Integer)
Dim I As Integer, J As Integer
J = Index * 20 + 50
I = Index * 2
L1(I).Caption = IIf(Check1(Index).Value, vbNullString, J) '如果要显示0的话就把加蓝部分换成0
L1(I + 1).Caption = IIf(Check1(Index).Value, vbNullString, J + 10)
End Sub

Private Sub Form_Load()
Dim I As Integer
For I = 0 To 5
L1(I).Caption = 50 + I * 10
Next
End Sub


你的思路我试验过了可行,就是我想要的意思,谢谢你啊。

请问2楼朋友,vbNullString属于一个什么意思的参数,是空白的文字符串的意思吗??因为初了解VB,所以可能理解能力不够强,谢谢。

[此贴子已经被作者于2007-6-2 16:23:53编辑过]

2007-6-2 16:22
Joforn
Rank: 12Rank: 12Rank: 12
等级:贵宾
威望:21
帖子:1207
积分:12788
注册:2007-1-2

vbNullString就是空字符串,比""还更少占内存。
2007-6-2 16:28
寻找
Rank: 2
等级:注册会员
帖子:106
积分:1172
注册:2007-3-2

以下是引用Joforn在2007-6-2 16:28:36的发言:
vbNullString就是空字符串,比""还更少占内存。

OK,谢谢楼上版主,您的热心帮助会使论坛更加兴旺的!充心感谢!

2007-6-2 16:32
寻找
Rank: 2
等级:注册会员
帖子:106
积分:1172
注册:2007-3-2

不好意思啊,研究一下,楼上的代码发现有个问题啊不太懂

Private Sub Check1_Click(Index As Integer)
Dim I As Integer, J As Integer
J = Index * 20 + 50
I = Index * 2
Label1(Index).Caption = IIf(Check1(Index).Value, vbNullString, J)
Label1(Index + 1).Caption = IIf(Check1(Index).Value, vbNullString, J + 10)
End Sub

Private Sub Form_Load()
Dim I As Integer
For I = 0 To 5
Label1(Indxe).Caption = 50 + I * 10
Next
End Sub

就是,如果按照楼上的代码去做的话,不能做到交叉过滤数据,我总的意思是Label里的值是不变的,
而楼上的思路好像是有有改变的。第四个Label没有发生作用,而其他的又改变了他的值,请问是什么回事啊???

[此贴子已经被作者于2007-6-2 17:00:19编辑过]

2007-6-2 16:57
Joforn
Rank: 12Rank: 12Rank: 12
等级:贵宾
威望:21
帖子:1207
积分:12788
注册:2007-1-2

Option Explicit

Private Sub Check1_Click(Index As Integer)
L1(0).Caption = IIf(Check1(0).Value Or Check1(1).Value, 0, 50)
L1(1).Caption = IIf(Check1(0).Value Or Check1(1).Value, 0, 60)
L1(2).Caption = (1 - Check1(0).Value) * 70
L1(3).Caption = IIf(Check1(0).Value Or Check1(2).Value, 0, 80)
L1(4).Caption = (1 - Check1(2).Value) * 100
End Sub

Private Sub Form_Load()
Dim I As Integer
For I = 0 To 3
L1(I).Caption = 50 + I * 10
Next
L1(I).Caption = 100
End Sub

2007-6-2 17:58
寻找
Rank: 2
等级:注册会员
帖子:106
积分:1172
注册:2007-3-2

以下是引用Joforn在2007-6-2 17:58:13的发言:

Option Explicit

Private Sub Check1_Click(Index As Integer)
L1(0).Caption = IIf(Check1(0).Value Or Check1(1).Value, 0, 50)
L1(1).Caption = IIf(Check1(0).Value Or Check1(1).Value, 0, 60)
L1(2).Caption = (1 - Check1(0).Value) * 70
L1(3).Caption = IIf(Check1(0).Value Or Check1(2).Value, 0, 80)
L1(4).Caption = (1 - Check1(2).Value) * 100
End Sub

Private Sub Form_Load()
Dim I As Integer
For I = 0 To 3
L1(I).Caption = 50 + I * 10
Next
L1(I).Caption = 100
End Sub

谢谢楼上斑竹,现在用完全是没问题了。谢谢啊~又学到东西了!

2007-6-2 18:43
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.077094 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved