以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  去除多选内容  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=137349)

--  作者:nxqtxwz
--  发布时间:2019/7/4 7:50:00
--  去除多选内容
我采用在窗口中放多个复选框的方式进行多选输入,但有一个问题,输入完第一个后,输入第二个时,前面的多选框中的钩还在,如何实现输入下一个是把前一个选择的钩取消呢?
--  作者:有点蓝
--  发布时间:2019/7/4 9:23:00
--  
1、改为单选框
2、窗口全局事件CheckedChanged事件,把复选框都放入一个panel里面
If e.Sender.checked = True
    For Each c As WinForm.Control In e.Form.Controls("panel1").Children
        If c.Name <> e.Sender.name AndAlso Typeof c Is WinForm.CheckBox Then
            Dim t As WinForm.CheckBox= c 
            t.Checked = False
        End If
    Next
End If

--  作者:nxqtxwz
--  发布时间:2019/7/4 10:09:00
--  

1、老师,按您的第2条做的话,我的多选变成单选了。

2、我的本意是保持多选,但在填完一条记录,填下一条时记录时,把上一条选的钩去掉重新选,现在是比如:输入第一条记录时选了3个人,等输入每二条记录时,选择的这三个人前面的钩仍然在,要取掉钩重新选。我的想法是在后面的记录时,自动把前面选的钩去掉。

 


--  作者:有点蓝
--  发布时间:2019/7/4 10:23:00
--  
1楼没有说清楚哦。

表currentchanged事件
if Forms("窗口1").opened then
Forms("窗口1").Controls("checkbox1").Checked = False
Forms("窗口1").Controls("checkbox2").Checked = False
end if

或者参考2楼的方法遍历去掉勾选

--  作者:nxqtxwz
--  发布时间:2019/7/4 11:20:00
--  
以下是引用有点蓝在2019/7/4 10:23:00的发言:
1楼没有说清楚哦。

表currentchanged事件
if Forms("窗口1").opened then
Forms("窗口1").Controls("checkbox1").Checked = False
Forms("窗口1").Controls("checkbox2").Checked = False
end if

或者参考2楼的方法遍历去掉勾选

老师,代码请给改改,谢谢。

 

If Forms("出差人").opened Then
    If e.Sender.checked = True
        For Each c As WinForm.Control In e.Form.Controls("panel1").Children
            If c.Name <> e.Sender.name AndAlso Typeof c Is WinForm.CheckBox Then
                Dim t As WinForm.CheckBox= c
                Forms("出差人").Controls("checkbox&"t").Checked = False
            End If
        Next
    End If
End If


--  作者:有点蓝
--  发布时间:2019/7/4 12:12:00
--  
If Forms("出差人").opened Then
        For Each c As WinForm.Control In Forms("出差人").Controls("panel1").Children
            If Typeof c Is WinForm.CheckBox Then
                Dim t As WinForm.CheckBox= c
                t.Checked = False
            End If
        Next
End If
--  作者:nxqtxwz
--  发布时间:2019/7/4 14:21:00
--  

老师您好,这段代码其它正常,但当一个人都不选时出错,请问能不能改一改呢?

 

Dim s As  String
For Each ctl As WinForm.Control In e.Form.Controls \'遍历所有控件
    If TypeOf ctl Is WinForm.CheckBox Then \'如果此控件是
        Dim rdo As WinForm.CheckBox = ctl
        If rdo.Checked Then \'如果已经选中
            s &= rdo.Text & "、"
        End If
    End If
Next
e.Form.DropDownBox.Value = s.trim("、") \'将此单选框的文本赋值给下拉组合框
e.Form.DropDownBox.CloseDropdown() \'关闭下拉窗口


--  作者:有点蓝
--  发布时间:2019/7/4 15:53:00
--  
Dim s As  String

改为

Dim s As  String = ""
[此贴子已经被作者于2019/7/4 15:53:39编辑过]

--  作者:nxqtxwz
--  发布时间:2019/7/4 16:52:00
--  

老师真厉害,谢谢!