VB编程问题,关于多个复选框checkbox的判断问题
我在一个窗口中放入了多个checkbox,和一个textbox.我想通过不同的多选组合在textbox上显示不同的内容.例如:"□"是没有选中,"■"是选中checkbo...
我在一个窗口中放入了多个checkbox,和一个textbox.
我想通过不同的多选组合在textbox上显示不同的内容.
例如: "□"是没有选中,"■"是选中
checkbox选择情况: □ ■ □ □ □ ■ □ □
textbox显示情况: 0 1 0 0 0 1 0 0
我的想法是用一个变量对选择情况进行编码,可是又不会.
看请网友指教!!
上面的例子是有8个选择框的,如果选择框更多的情况呢?例如有30个选择框,所以用if判断好像不是太好 展开
我想通过不同的多选组合在textbox上显示不同的内容.
例如: "□"是没有选中,"■"是选中
checkbox选择情况: □ ■ □ □ □ ■ □ □
textbox显示情况: 0 1 0 0 0 1 0 0
我的想法是用一个变量对选择情况进行编码,可是又不会.
看请网友指教!!
上面的例子是有8个选择框的,如果选择框更多的情况呢?例如有30个选择框,所以用if判断好像不是太好 展开
3个回答
推荐于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)
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
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
建一个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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
看附件吧 1000千个 都没问题 代码很简单
追问
上面的已经看懂了,如果我想在text中输入数值(要限定只能输入0和1),多选框也发生变化,要怎么做?
追答
按你要求修改了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询