Foxtable(狐表)用户栏目专家坐堂 → 去除多选内容


  共有1768人关注过本帖树形打印复制链接

主题:去除多选内容

帅哥哟,离线,有人找我吗?
nxqtxwz
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1495 积分:12175 威望:0 精华:0 注册:2013/3/19 16:41:00
去除多选内容  发帖心情 Post By:2019/7/4 7:50:00 [只看该作者]

我采用在窗口中放多个复选框的方式进行多选输入,但有一个问题,输入完第一个后,输入第二个时,前面的多选框中的钩还在,如何实现输入下一个是把前一个选择的钩取消呢?

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106298 积分:540619 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  3楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1495 积分:12175 威望:0 精华:0 注册:2013/3/19 16:41:00
  发帖心情 Post By:2019/7/4 10:09:00 [只看该作者]

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

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

 


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106298 积分:540619 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  5楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1495 积分:12175 威望:0 精华:0 注册:2013/3/19 16:41:00
  发帖心情 Post By: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


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106298 积分:540619 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  7楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1495 积分:12175 威望:0 精华:0 注册:2013/3/19 16:41:00
  发帖心情 Post By: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() '关闭下拉窗口


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106298 积分:540619 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/4 15:53:00 [只看该作者]

Dim s As  String

改为

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

 回到顶部
帅哥哟,离线,有人找我吗?
nxqtxwz
  9楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1495 积分:12175 威望:0 精华:0 注册:2013/3/19 16:41:00
  发帖心情 Post By:2019/7/4 16:52:00 [只看该作者]

老师真厉害,谢谢!


 回到顶部