Вот один из способов сделать это:
Создайте форму с именем ComboDeleteExample с помощью поля со списком и кнопки. Чтобы создать базу данных, я просто поместил таблицу продуктов базы данных SQL Server AdventureWorks в Microsoft Access. Если у вас нет SQL Server или Adventure, просто создайте таблицу Product с двумя столбцами; ProductID (int) и имя varchar (25).
Скопируйте этот код в форму:
Public Class ComboDeleteExample
Const _ConnectionString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Temp\Database1.accdb;"
Private dtProducts As New System.Data.DataTable("Products")
Private Sub PopulateCombo()
Using conn As New System.Data.OleDb.OleDbConnection(_ConnectionString)
conn.Open()
Dim sqlCmd As New System.Data.OleDb.OleDbCommand("select * from product", conn)
Dim dr As System.Data.OleDb.OleDbDataReader = sqlCmd.ExecuteReader()
dtProducts.Load(dr)
End Using
ComboBox1.DataBindings.Add(New System.Windows.Forms.Binding("Text", dtProducts, "ProductId", True, DataSourceUpdateMode.OnPropertyChanged))
ComboBox1.DisplayMember = "Name"
ComboBox1.DataSource = dtProducts
End Sub
Private Sub ComboDeleteExample_Load(sender As Object, e As System.EventArgs) Handles Me.Load
PopulateCombo()
End Sub
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
If ComboBox1.SelectedItem IsNot Nothing AndAlso TypeOf (ComboBox1.SelectedItem) Is System.Data.DataRowView Then
Using conn As New System.Data.OleDb.OleDbConnection(_ConnectionString)
conn.Open()
Dim row As System.Data.DataRowView = DirectCast(ComboBox1.SelectedItem, System.Data.DataRowView)
Dim sqlcmd As New System.Data.OleDb.OleDbCommand(String.Format("delete * from product where productid={0}", row.Item("ProductID")), conn)
If sqlcmd.ExecuteNonQuery() = 1 Then
row.Delete()
dtProducts.AcceptChanges()
End If
End Using
End If
End Sub
End Class