Private Sub ListView42_MouseDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListView42.MouseDoubleClick
'detect clicked subitem / column
Dim hit As ListViewHitTestInfo = ListView42.HitTest(e.X, e.Y)
For Each lItem As ListViewItem In ListView42.Items
If lItem.Selected = True Then
For a = 0 To lItem.SubItems.Count
If hit.SubItem.Tag = lItem.SubItems(a).Tag Then
selCol = a
'prevent edit on first column
If selCol = 0 Then Exit Sub
'dim size and location of the TextBox
'TextBox.FontSize maybe 1 bigger than that of
'Listview Items to get the users eye catched on it.
TextBox42.Left = ListView42.Left + hit.SubItem.Bounds.Left + 3
TextBox42.Top = ListView42.Top + hit.SubItem.Bounds.Top
TextBox42.Width = hit.SubItem.Bounds.Width
TextBox42.Text = hit.SubItem.Text
'set TextBox to visible for user input
TextBox42.Visible = True
TextBox42.Focus()
TextBox42.SelectAll()
Exit For
End If
Next
End If
Next
End Sub
Private Sub TextBox42_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox42.KeyPress
'call LostFocus Sub in the event user pressed RETURN
If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
TextBox42_LostFocus(sender, Nothing)
End If
End Sub
Private Sub TextBox42_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox42.LostFocus
Dim selDetail As String
'hide textbox
TextBox42.Visible = False
'load old value to detect if there is a change
selDetail = ListView42.SelectedItems(0).SubItems(selCol).Text
'change the subitem.text only if the new value is different to the existing one
'to prevent display of the save butten without changing values
If selDetail <> TextBox42.Text Then
ListView42.Items(ListView42.SelectedItems(0).Index).SubItems(selCol).Text = TextBox42.Text
'set change flag for not stored information to prevent loss of update by change of selection
'changeFlage = True
btnSave.Visible = True
End If
'do not clear the TextBox.Text, dueto LostFocus Sub may be called twice
'(e.g. click mouse on a control different as the ListView)
'else the list subitem.text will be overwritten again by an empty string
End Sub