Foxtable(狐表)用户栏目专家坐堂 → checkbox全选问题


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

主题:checkbox全选问题

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


加好友 发短信
等级:童狐 帖子:266 积分:2166 威望:0 精华:0 注册:2014/12/16 12:25:00
checkbox全选问题  发帖心情 Post By:2016/5/26 11:24:00 [只看该作者]

老师们好!

窗口有好几个页面集合(tabcontrol)组成,窗口中的控件全是复选框(checkbox),数量也比较多,我在一个页面集合控件中设了一个“全选”控件(checkbox),并写了如下代码

 

Dim r As Row = Tables(e.form.TableName).Current

Dim s As String = e.Sender.Parent.name

For Each c As WinForm.Control In e.Form.Controls

    If Typeof c Is WinForm.CheckBox Then

        Dim t As WinForm.CheckBox = c

        If t.Parent.name = s And t.name <> e.Sender.Name Then

            Dim s1 As String = t.BindingField

            Dim p1 As Integer = s1.LastIndexOf(".")

            Dim c1 As String = s1.SubString(p1 + 1)

            r(c1) = e.sender.Checked

        End If

    ElseIf Typeof c Is WinForm.GroupBox Then

        Dim t As WinForm.GroupBox = c

        For Each ctr As WinForm.Control In e.Form.Controls(t.Name).Children

           

            If Typeof ctr Is WinForm.CheckBox Then

                Dim t1 As WinForm.CheckBox = ctr

                Dim s1 As String = t1.BindingField

                Dim p1 As Integer = s1.LastIndexOf(".")

                Dim c1 As String = s1.SubString(p1 + 1)

                r(c1) = e.sender.Checked

 

 

  

            End If

           

            'Functions.Execute("全选遍历",Args(0),Args(1),Args(2),Args(3),Args(4))

        Next

    End If

Next

 

这个代码虽然管用, 能全选,但是对所有页面集合有效,我想要只能有效一个页面集合上控件的代码,请问怎样完成

 


图片点击可在新窗口打开查看此主题相关图片如下:111.png
图片点击可在新窗口打开查看

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


加好友 发短信
等级:童狐 帖子:266 积分:2166 威望:0 精华:0 注册:2014/12/16 12:25:00
  发帖心情 Post By:2016/5/26 11:27:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:222.png
图片点击可在新窗口打开查看

是这样的控件


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/5/26 12:16:00 [只看该作者]

1、我建议你用命名来做,也就是同一个页面的控件,都命名为如 页面1_xxxx控件。这样判断名字即可;

 

2、直接判断,这样写

 

Dim r As Row = Tables(e.form.TableName).Current
Dim pp As object = e.Sender.Parent
For Each c As WinForm.Control In e.Form.Controls
    If Typeof c Is WinForm.CheckBox Then
        Dim p As object = c
        Dim pname As String
        Do While p.parent IsNot Nothing
            p = p.parent
            If p.equals(pp) Then
                msgbox(c.name)
                'Dim s1 As String = c.BindingField
                '
                'Dim p1 As Integer = s1.LastIndexOf(".")
                '
                'Dim c1 As String = s1.SubString(p1 + 1)
                '
                'r(c1) = e.sender.Checked         
                Exit Do
            End If
        Loop
       
    End If
Next


 回到顶部