#vb.net #winforms
#vb.net #winforms
Вопрос:
У меня есть Listview и кнопка, подобная этой
Ниже приведен код, который я использовал для удаления данных из Listview
Private Sub btnDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDelete.Click
If lvNotesList.SelectedItems.Count > 0 Then
Dim Result = MsgBox("Are sure you want to Delete the Selected Item ?", MessageBoxButtons.YesNo vbQuestion)
If Result = DialogResult.Yes Then
Dim ID As String = lvNotesList.SelectedItems(0).SubItems(0).Text
Try
Dim sqlConnection As New SQLite.SQLiteConnection()
Dim sqlCommand As New SQLiteCommand("", sqlConnection)
Dim sqlPath As String = "Data Source=" amp; Application.StartupPath amp; "DatabaseSimpleDB.db3"
Dim sqlQuery As String = "DELETE FROM Notes WHERE NoteID = " amp; ID
sqlConnection.ConnectionString = sqlPath
sqlConnection.Open()
sqlCommand.CommandText = sqlQuery
sqlCommand.ExecuteNonQuery()
sqlConnection.Close()
MsgBox("Operation Successfull", vbInformation)
Catch ex As Exception
MsgBox("Error: Operation Unsuccessfull." amp; Chr(13) amp; "Sumamry:" amp; ex.Message, vbExclamation)
End Try
Else
Exit Sub
End If
Else
MsgBox("Select an Item First", vbExclamation)
End If
End Sub
По какой-то причине это выдает ошибку, подобную этой
Как я могу это исправить?
Ответ №1:
MsgBox
Приводит к тому, что ListView теряет фокус, что, в свою очередь, очищает выделение. Вам нужно будет установить для HideSelection
свойства вашего ListView значение false
.
Редактировать:
Попробуйте это
If lvNotesList.SelectedItems.Count > 0 Then
Dim ID As String = lvNotesList.SelectedItems(0).SubItems(0).Text
Dim Result = MsgBox("Are sure you want to Delete the Selected Item ?", MessageBoxButtons.YesNo vbQuestion)
If Result = DialogResult.Yes Then
Комментарии:
1. Да, это работает идеально, когда я удаляю msgbox. Но тогда как я могу предупредить пользователя?
2. установите значение HideSelection равным false для вашего listview из конструктора.