بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله و بركاته
هذا الموضوع خصيصا للاداتين
CheckedListBox With ListBox
لاول مرة اتعامل مع هذه الاداة ولاحظت كم كنت غافلا عنها(CheckedListBox ) بحيث تيسر عليك الكم الهائل من الاكواد للاسناد.(أقصد توفر الوقت والجهد لوضع عدة ادوات checkbox)
PHP كود :
Public Class Form1
Private Sub gd(Optional ByVal index As Integer = 0)
ListBox1.DataSource = Nothing
ListBox1.Items.Clear()
c.Items.Clear()
con = New OleDb.OleDbConnection(str)
da = New OleDb.OleDbDataAdapter("select * from tb", con)
cm = New OleDb.OleDbCommandBuilder(da)
dt = New DataTable
da.Fill(dt)
Me.ListBox1.DataSource = dt
Me.ListBox1.DisplayMember = "tname"
Dim i As Integer
For i = 2 To dt.Columns.Count - 1
Me.c.Items.Add(dt.Columns(i).ColumnName.ToString)
Next
BindingContext(dt).Position = index
End Sub
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
gd()
End Sub
Private Sub ListBox1_MouseClick(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles ListBox1.MouseClick
If dt.Rows.Count = 0 Then Exit Sub
If ListBox1.Items.Count = 0 Then Exit Sub
If e.Button = Windows.Forms.MouseButtons.Left Then
btnedit.Enabled = True
End If
End Sub
Private Sub ListBox1_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
If dt.Rows.Count = 0 Then Exit Sub
If ListBox1.Items.Count = 0 Then Exit Sub
If ListBox1.SelectedIndex < 0 Then Exit Sub
Dim index As Integer = ListBox1.SelectedIndex
c.Enabled = True
For i = 2 To dt.Columns.Count - 1
c.SetItemChecked((i - 2), dt.Rows(index).Item(i))
Next
End Sub
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles btnedit.Click
Dim index As Integer = ListBox1.SelectedIndex
Dim row As DataRow = dt.Rows(index)
row.BeginEdit()
row(2) = c.GetItemChecked(0)
row(3) = c.GetItemChecked(1)
row(4) = c.GetItemChecked(2)
row(5) = c.GetItemChecked(3)
row.EndEdit()
da.Update(dt)
gd(index)
End Sub
Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles btnadd.Click
Dim frm2 As New FrmAddPerson
frm2.c.Items.Clear()
For Each h As String In Me.c.Items
frm2.c.Items.Add(h)
Next
frm2.ShowDialog()
frm2.Dispose()
gd()
End Sub
Private Sub btndel_Click(sender As System.Object, e As System.EventArgs) Handles btndel.Click
If dt.Rows.Count = 0 Then Exit Sub
If ListBox1.Items.Count = 0 Then Exit Sub
If ListBox1.SelectedIndex < 0 Then Exit Sub
Dim index As Integer = ListBox1.SelectedIndex
dt.Rows(index).Delete()
da.Update(dt)
gd()
End Sub
End Class
Public Class FrmAddPerson
Private Sub btnclose_Click(sender As System.Object, e As System.EventArgs) Handles btnclose.Click
Me.Close()
End Sub
Private Sub btnsave_Click(sender As System.Object, e As System.EventArgs) Handles btnsave.Click
If IsFound(TextBox1.Text) = False Then
Dim row As DataRow = dt.NewRow
row(1) = TextBox1.Text
row(2) = c.GetItemChecked(0)
row(3) = c.GetItemChecked(1)
row(4) = c.GetItemChecked(2)
row(5) = c.GetItemChecked(3)
dt.Rows.Add(row)
da.Update(dt)
btnclose.PerformClick()
Else
MsgBox("الاسم محجوز", MsgBoxStyle.Exclamation, "")
End If
End Sub
Private Sub TextBox1_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextBox1.TextChanged
c.Enabled = TextBox1.Text.Trim.Length
End Sub
End Class
المثال مرفق