Add a textbox and name it TextOverlay
Dim iRow, iCol as Integer
Private Sub TextOverlay_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Hanldes TextOverlay.TextChanged
'ListView1.Items(iRow).SubItems(iCol).Text = TextOverlay.Text
'TextOverlay.Hide()
'TextOverlay.Visible = False
'funUpdate() 'lstLicenses(sServer, 'lstLicenses.Items(iRow).Text, TextOverlay.Text, 'lstLicenses.Items(iRow).SubItems(iCol).Tag)
ListView1.Items(iRow).SubItems(iCol).Text = TextOverlay.Text
If Not lstChanged.Exists(Function(value As String) value = ListView1.Items(iRow).Text.ToString) Then lstChanged.Add(ListView1.Items(iRow).Text)
Dim lvSu As ListViewItem = ListView1.Items(iRow) '.SubItems(iCol).item
lvSu.UseItemStyleForSubItems = False
lvSu.SubItems(iCol).ForeColor = Color.Red
'TextOverlay.Hide()
'TextOverlay.Visible = False
'funUpdateLstLicenses(sServer, lstAllLicenses.Items(iRow).Text, TextOverlay.Text, lstAllLicenses.Items(iRow).SubItems(iCol).Tag)
'Me.Focus()
End Sub
Private Sub ListView1_Click(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListView1.MouseClick
Dim hit As ListViewHitTestInfo = ListView1.HitTest(e.X, e.Y)
Dim iWidth As Integer
For iCol = 0 To hit.Item.SubItems.Count - 1
If hit.Item.SubItems(iCol).Bounds.Left <= e.X Then
If iCol = 0 And hit.Item.SubItems.Count > 1 Then
If e.X <= hit.Item.SubItems(1).Bounds.Left Then
iWidth = hit.Item.SubItems(1).Bounds.Left
Exit For
End If
ElseIf e.X <= hit.Item.SubItems(iCol).Bounds.Right Then
iWidth = hit.Item.SubItems(iCol).Bounds.Width
Exit For
Else
TextOverlay.Visible = False
End If
Else
TextOverlay.Visible = False
End If
Next
iRow = hit.Item.Index
Debug.Print("hit.Item.Index: " & hit.Item.Index)
Try
Debug.Print("hit.SubItem.Tag.ToString: " & hit.SubItem.Tag.ToString)
'Debug.Print(" hit.Item.Tag: " & hit.Item.Tag)
If hit.SubItem.Tag.ToString = "ReadOnly" Then Return
TextOverlay.Left = ListView1.Left + hit.SubItem.Bounds.Left + 3
TextOverlay.Top = ListView1.Top+ hit.SubItem.Bounds.Top
Catch ex As Exception
Debug.Print("hit.SubItem.Tag.ToString:" & hit.Item.Tag.ToString)
Debug.Print(" hit.Item.Tag: " & hit.Item.Tag)
If hit.Item.Tag.ToString = "ReadOnly" Then Return
TextOverlay.Left = ListView1.Left+ hit.SubItem.Bounds.Left + 3
TextOverlay.Top = ListView1.Top+ hit.SubItem.Bounds.Top
End Try
Debug.Print("hit.Item.Index: " & hit.Item.Index)
Debug.Print("hit.SubItem.Tag.ToString: " & hit.SubItem.Tag.ToString)
Debug.Print(" hit.Item.Tag: " & hit.Item.Tag)
If hit.SubItem.Tag.ToString = "ReadOnly" Then Return
TextOverlay.Left = ListView1.Left + hit.SubItem.Bounds.Left + 3
TextOverlay.Top = ListView1.Top + hit.SubItem.Bounds.Top
TextOverlay.Width = iWidth
TextOverlay.Height = 18
TextOverlay.Text = hit.SubItem.Text
TextOverlay.Visible = True
TextOverlay.Focus()
TextOverlay.ReadOnly = False
End Sub
'https://stackoverflow.com/questions/10298551/make-a-cell-editable-in-a-listview
Dim Combo As New ComboBox
Dim lvitem As ListViewItem = lstGroups.Items.Add("Add to the right -->")
Combo.DropDownStyle = ComboBoxStyle.DropDown
Combo.Height = lvitem.Bounds.Height
Combo.Location = New Point(lvitem.Bounds.Right - 20, lvitem.Bounds.Y)
AddHandler Combo.SelectedIndexChanged, AddressOf Combo_SelectedIndexChanged
AddHandler Combo.KeyUp, AddressOf Combo_KeyUp
'AddHandler Combo.sel AddressOf Combo_SelectedIndexChanged
lstGroups.Controls.Add(Combo)
--
Private Sub Combo_SelectedIndexChanged(sender As Object, e As EventArgs)
'Throw New NotImplementedException()
Dim cmb As ComboBox = CType(sender, ComboBox)
If cmb.Text = "Add to the right -->" Then Return
If MsgBox("Add? " & cmb.Text, MsgBoxStyle.YesNo) = vbYes Then
Dim lvItem As ListViewItem = lstGroups.Items.Add(cmb.Text)
AddGroup(sServer, cmb.Text)
End If
End Sub
Private Sub Combo_KeyUp(sender As Object, e As KeyEventArgs) 'Handles ComboBox1.KeyUp
If e.KeyCode = Keys.Enter Then
Combo_SelectedIndexChanged(sender, Nothing)
End If
End Sub
Dim lvSu As ListViewItem = ListView1.Items(iRow) '.SubItems(iCol).item
lvSu.UseItemStyleForSubItems = False
lvSu.SubItems(iCol).ForeColor = Color.Red
textoverlay#_KeyDown
'----
ElseIf e.KeyCode = Keys.F3 Then
TextOverlay2.Visible = False
Dim lvItem As ListViewSubItem = lstAllLicenses.Items(iRow).SubItems(iCol)
Dim Combo1 As New ComboBox
Combo1.DropDownStyle = ComboBoxStyle.DropDown
Combo1.Height = lvitem.Bounds.Height
Combo1.Location = New Point(lvItem.Bounds.Left, lvItem.Bounds.Y)
Combo1.Items.Add(lvItem.Tag)
'Combo1.Items.Add("Test2")
'Combo1.Items.Add("Test3")
'Combo1.Items.Add("Test4")
funGetAllDataFromField(lvItem.Tag, Combo1)
Combo1.Text = lvItem.Text
AddHandler Combo1.SelectedIndexChanged, AddressOf Combo1_SelectedIndexChanged
AddHandler Combo1.KeyUp, AddressOf Combo1_KeyUp
AddHandler Combo1.LostFocus, AddressOf Combo1_LostFocus
lstAllLicenses.Controls.Add(Combo1)
End If
'----
Private Sub Combo1_KeyUp(sender As Object, e As KeyEventArgs) 'Handles ComboBox1.KeyUp
If e.KeyCode = Keys.Enter Then
Combo1_SelectedIndexChanged(sender, Nothing)
Dim cmb As ComboBox = CType(sender, ComboBox)
lstAllLicenses.Controls.Remove(cmb)
End If
End Sub
Private Sub Combo1_LostFocus(sender As Object, e As EventArgs) '--Handles ComboBox1.LostFocus
Combo1_SelectedIndexChanged(sender, Nothing)
Dim cmb As ComboBox = CType(sender, ComboBox)
lstAllLicenses.Controls.Remove(cmb)
End Sub
Private Sub Combo1_SelectedIndexChanged(sender As Object, e As EventArgs)
'Throw New NotImplementedException()
Dim cmb As ComboBox = CType(sender, ComboBox)
Debug.Print("cmb.text: " & cmb.Text)
'If cmb.Text = "Add to the right -->" Then Return
lstAllLicenses.Items(iRow).SubItems(iCol).Text = cmb.Text
'If MsgBox("Add? " & cmb.Text, MsgBoxStyle.YesNo) = vbYes Then
' Dim lvItem As ListViewItem = lstGroups.Items.Add(cmb.Text)
' AddGroup(sServer, cmb.Text)
'End If
End Sub