以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  checklsitbox问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=84213)

--  作者:rjh4078
--  发布时间:2016/4/26 8:42:00
--  checklsitbox问题

Dim s As String
Dim ckl As WinForm.CheckedListBox = e.Form.Controls("cl")
Dim k As Integer
For i As Integer = 0 To ckl.Items.count - 1 \'获取已经勾选的项目
    If ckl.GetItemChecked(i) Then
       
        s=  s & ckl.Items(i)  & "|" & ckl.Items(i).length*27 & "|"
    End If
Next

If s<>"" Then
    e.Form.Controls("txt").value=s.SubString(0,s.length-1)
Else
    e.Form.Controls("txt").value=s
End If

 

 

我想实现一个和系统自带的选择列的那个类似的功能  代码如上  但是发现我在取消某个勾选项目后 顺序就乱掉了


--  作者:大红袍
--  发布时间:2016/4/26 9:19:00
--  

乱掉指什么?我这样测试没问题

 

Dim s As String
Dim ckl As WinForm.CheckedListBox = e.Sender
Dim k As Integer
For i As Integer = 0 To ckl.Items.count - 1 \'获取已经勾选的项目
    If e.Index = i Then
        If e.Checked = True Then
            s=  s & ckl.Items(i)  & "|" & ckl.Items(i).length*27 & "|"
           
        End If
    Else
        If ckl.GetItemChecked(i) Then
           
            s=  s & ckl.Items(i)  & "|" & ckl.Items(i).length*27 & "|"
        End If
    End If
Next

If s<>"" Then
    e.Form.Controls("textbox1").value=s.SubString(0,s.length-1)
Else
    e.Form.Controls("textbox1").value=s
End If


--  作者:rjh4078
--  发布时间:2016/4/26 9:25:00
--  

已经通过其他方式搞定  这个代码没办法记录点击的顺序 他默认按照从小到大来排  所以如果先点击大号再点击小号 就会出现顺序混乱 换成了下面这个代码就好了 在itemcheck事件中

 

Dim s As String
Dim ckl As WinForm.CheckedListBox = e.Form.Controls("cl")
Dim k As Integer
If e.Checked Then
    vars("选择项目")=vars("选择项目") & ckl.SelectedValue & "|" & ckl.SelectedValue.length*27 & "|"
Else
    vars("选择项目")=vars("选择项目").replace(ckl.Items(e.Index) & "|" & ckl.SelectedValue.length*27 & "|","")
End If

If vars("选择项目")<>"" Then
e.Form.Controls("txt").value=vars("选择项目").SubString(0,vars("选择项目").length-1)
Else
e.Form.Controls("txt").value=vars("选择项目")
End If