VB编程问题,关于多个复选框checkbox的判断问题

我在一个窗口中放入了多个checkbox,和一个textbox.我想通过不同的多选组合在textbox上显示不同的内容.例如:"□"是没有选中,"■"是选中checkbo... 我在一个窗口中放入了多个checkbox,和一个textbox.

我想通过不同的多选组合在textbox上显示不同的内容.
例如: "□"是没有选中,"■"是选中
checkbox选择情况: □ ■ □ □ □ ■ □ □
textbox显示情况: 0 1 0 0 0 1 0 0

我的想法是用一个变量对选择情况进行编码,可是又不会.
看请网友指教!!
上面的例子是有8个选择框的,如果选择框更多的情况呢?例如有30个选择框,所以用if判断好像不是太好
展开
 我来答
匿名用户
推荐于2016-08-18
展开全部
使用控件数组
Private Sub Check1_Click(Index As Integer)
Dim i As Integer
Dim tmpstr As String
For i = 0 To Check1.UBound
tmpstr = tmpstr & CStr(Check1(i).Value)
Next
Text1.Text = tmpstr
End Sub

Private Sub Form_Load()
Dim i As Integer
Check1(0).Caption = ""
Check1(0).Width = 200
For i = 1 To 7
Load Check1(i)
Check1(i).Visible = True
Check1(i).Left = Check1(i - 1).Left + 300
Next
End Sub

Private Sub Form_Unload(Cancel As Integer)
Dim i As Integer
For i = 1 To Check1.UBound
Unload Check1(i)
Next
End Sub
更多追问追答
追问
请问可以加点注释吗?我是新手谢谢!
追答
Private Sub Check1_Click(Index As Integer)'check1控件点击事件,当你点了后发生
Dim i As Integer'声明整型变量,用于循环控制
Dim tmpstr As String''声明字符变量,用于暂存选择结果
For i = 0 To Check1.UBound‘控件数组有8个checkbox,从0到最大下标(ubound)循环
tmpstr = tmpstr & CStr(Check1(i).Value)'将check1的值放到tmpstr变量中,并且加上已经存放的,CStr是将数值转换为字符的函数,选择的是1,未选的是0
Next
Text1.Text = tmpstr'结果放到text1
End Sub

Private Sub Form_Load()'form的load事件,打开程序时执行
Dim i As Integer
Check1(0).Caption = ""'将check1的显示为空
Check1(0).Width = 200'check1的宽度
For i = 1 To 7'从1到7循环
Load Check1(i)'添加check1到控件数组
Check1(i).Visible = True'新添加的不显示,需要将Visible 属性设置为true(显示’
Check1(i).Left = Check1(i - 1).Left + 300'让新添加的位置在原来左边加300
Next
End Sub

Private Sub Form_Unload(Cancel As Integer)'关闭程序时发生的事件,需要将新添加的控件卸载
Dim i As Integer
For i = 1 To Check1.UBound'循环
Unload Check1(i)'卸载
Next
End Sub
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
落叶l无情
2014-08-21 · TA获得超过1417个赞
知道大有可为答主
回答量:1372
采纳率:0%
帮助的人:1423万
展开全部

建一个checkbox的控件数组(设name=check1)

在 form1_load里面设置 text1.text=string(ubound(check1)+1,"0"),或者在text1属性里面设置text="0000000000000000" (0的个数等于checkbox的个数)

private sub check1_click(index as integer)
    mid(text1.text,index+1,1)=str(check1.value)
end sub
追问
请问,可以简单解释一下代码的意思么!?我只是新手.另外如果我想在text中输入数值(要限定只能输入0和1),那些多选框也发生变化,要怎么做?
追答

代码的意思是使用str函数将check1.value的值(选择时为1,未选中时为0),转换为字符"0"或者"1",用这个字符去替换text1.text第index+1个字符。

限制输入:

Private Sub text1_KeyPress(KeyAscii As Integer)
    If KeyAscii)<>48 and KeyAscii)<>49 and KeyAscii<>vbKeyBack Then KeyAscii = 0  '"0"的ascii码为48,"1"的asccii码为49,vbKeyBack表示退格键
End Sub

多选框随之变化:

Private Sub text1_Change()
    for i=0 to ubound(check1)
        if i<len(text1) then  
            check1(i).value=mid(text1,i+1,1)
        else          'text1字符长度小于check1的个数时,剩余的check1设置为未选中
            check1(i).value=0
        end if
    next
End Sub
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tianqing20wen

2014-08-21 · TA获得超过2.4万个赞
知道大有可为答主
回答量:8226
采纳率:88%
帮助的人:5150万
展开全部

看附件吧 1000千个 都没问题 代码很简单

追问
上面的已经看懂了,如果我想在text中输入数值(要限定只能输入0和1),多选框也发生变化,要怎么做?
追答

按你要求修改了

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式