CheckedlistBox绑定数据库,并获得所有选中的值(ValueMember)和显示值(DisplayMember)
新建一个窗体:需要两个控件:CheckedlistBox控件 命名为:ChkListSecName
Button控件 命名为:BtnOk
CheckedlistBox控件比较有用到两个属性分别为CheckOnClick为True:表示单击就选中当前行,为False:要点两下才可以选中。(默认值为False)。还有一个属性为ThreeDCheckBoxes为True:表示三维的选中标记,为False:表示表面的显示标记。(默认值为False)。
在当前窗体代码的最上面引用如下代码:Imports System.Data.SqlClient
接着定义两个变量:连接变量(Con)和数据集(ChkListDst)
Dim str As String = "data source=(Local);persist security info=false;user id=sa;password=;initial catalog=TestData"
Dim Con As New SqlConnection(str)
Dim ChkListDst As New DataSet
接着定义一个过程,把CheckedlistBox绑定到数据库
Public Sub ChkListBin()
Try
If Con.State = ConnectionState.Closed = True Then '如果连接是关闭的,就执行打开连接
Con.Open() '打开连接
End If
ChkListDst.Clear() '清空数据集
Dim AdpChkList As New SqlDataAdapter("Select SecNo,SecName from DeptData Order By SecNo", Con) '定义数据适配器所获得的值
AdpChkList.Fill(ChkListDst, "SecName") '把数据适配器填充到数据集中,表名的映射名为SecName
ChkListSecName.DataSource = ChkListDst.Tables("SecName") '定义CheckedlistBox的数据源
ChkListSecName.ValueMember = "SecNo" '定义CheckedlistBox的Value值,没有直接显示出来
ChkListSecName.DisplayMember = "SecName" '定义CheckedlistBox的Display值,直接显示出来
Catch ex As Exception
MsgBox(ex.ToString) '出错提醒
Finally
If Con.State = ConnectionState.Open = True Then '如果连接是打开的,就执行关闭连接
Con.Close() '关闭连接
End If
End Try
End Sub
在它窗口的初始化加载的时候,加入刚刚定义的把CheckedlistBox绑定数据库的过程
Private Sub FrmChkList_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
ChkListBin()
End Sub
在按钮事件中
Private Sub BtnOk_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnOk.Click
Dim N As Integer
For N = 0 To ChkListSecName.Items.Count - 1
If ChkListSecName.GetItemChecked(N) = True Then '从第1条到最后一条,只要为True进入判断
ChkListSecName.SelectedIndex = ChkListSecName.GetItemText(N) '只要为True,让它为当前行
MsgBox(ChkListSecName.SelectedValue & ChkListSecName.Text)
'显示当前行的值(ValueMember)和显示值(DisplayMember)
End If
Next
End Sub