Сначала я установил DataTable, как показано ниже. Добавлено 3 столбца с Desc, Price и полная строка для отображения.VB.NET Как удалить выбранные строки из DataTable и обновить его до CheckedListBox?
checkBoxDT = New DataTable
checkBoxDT.Columns.Add(New DataColumn With
{.ColumnName = "Desc", .DataType = GetType(String)})
checkBoxDT.Columns.Add(New DataColumn With
{.ColumnName = "Price", .DataType = GetType(Decimal)})
checkBoxDT.Columns.Add(New DataColumn With
{.ColumnName = "DisplayText", .DataType = GetType(String),
.Expression = "Desc + ' - RM ' + Price"})
Затем я создаю новый DataView и привязать CheckedListBox1 к DataTable.
checkListView = New DataView(checkBoxDT)
checkListView.Sort = "Desc ASC, Price ASC"
CheckedListBox1.DataSource = checkListView
CheckedListBox1.DisplayMember = "DisplayText"
Здесь я добавляю новые элементы в CheckedListBox1 с кодом ниже
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim quan As Integer = 0
Dim currentPrice As Decimal = 0.0
If ComboBox2.SelectedIndex > 0 Then
quan = Convert.ToInt32(ComboBox2.Text.Trim())
currentPrice = Convert.ToDecimal(TextBox3.Text.Trim())
For i As Integer = 1 To quan
checkBoxDT.Rows.Add({ComboBox1.Text, Convert.ToDecimal(TextBox3.Text)})
totalItems = totalItems + 1
totalPrice = totalPrice + currentPrice
Next
Else
currentPrice = Convert.ToDecimal(TextBox3.Text.Trim())
checkBoxDT.Rows.Add({ComboBox1.Text, Convert.ToDecimal(TextBox3.Text)})
totalItems = totalItems + 1
totalPrice = totalPrice + currentPrice
End If
TextBox5.Text = totalItems.ToString()
TextBox4.Text = totalPrice.ToString()
End Sub
Но у меня возникли проблемы при удалении элементов CheckedListBox1. Вот что я пробовал.
Это кнопка удаления. Я пытаюсь удалить элементы в CheckedListBox1 для всех выбранных элементов. Затем покажите правильную цену в TextBox4. Когда я выбираю только один элемент для удаления, он отлично работает. Но несколько выбранных элементов не работают должным образом. Он удаляет другой элемент, который также не выбран.
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
Dim currentPrice As Decimal = 0.0
While CheckedListBox1.CheckedItems.Count > 0
currentPrice = Convert.ToDecimal(CType(CheckedListBox1.SelectedItems(0), DataRowView).Item("Price").ToString())
totalPrice = totalPrice - currentPrice
totalItems = totalItems - 1
checkListView.Delete(CheckedListBox1.SelectedIndex())
End While
TextBox4.Text = totalPrice.ToString()
TextBox5.Text = totalItems.ToString()
End Sub
попробовать это: HTTP: //vbcity.com/blogs/xtab/archive/2010/09/22/how-to-delete-selected- items-from-a-checkedlistbox.aspx вместо удаления использовать удалить – coder32
@ coder32 Я уже видел гид. Все еще не в состоянии делать то, что я хочу, поэтому я разместил здесь вопрос. – Student
[Показывать отмеченные строки в другом DataGridView] (http://stackoverflow.com/q/37113690/1070452) – Plutonix