Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim cn As New SqlConnection()
cn.ConnectionString = "integrated security=true;initial catalog=northwind"
cn.Open()
Dim cmdtext As String = "select * from categories"
Dim cm As New SqlCommand(cmdtext, cn)
Dim dr As SqlDataReader = cm.ExecuteReader
Dim i As Integer = 0
While dr.Read
ListView1.Items.Add(dr(0))
ListView1.Items(i).SubItems.Add(dr(1))
ListView1.Items(i).SubItems.Add(dr(2))
i += 1
End While
TextBox1.Hide()
End Sub
Dim li As ListViewItem
Dim x As Integer = 0
Dim subitemtext As String
Dim subitemselected As Integer
Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
If e.KeyCode = Keys.Enter Then
li.SubItems(subitemselected).Text = TextBox1.Text
TextBox1.Hide()
End If
If e.KeyCode = Keys.Escape Then
TextBox1.Hide()
End If
End Sub
Private Sub TextBox1_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.Leave
li.SubItems(subitemselected).Text = TextBox1.Text
TextBox1.Hide()
End Sub
Private Sub ListView1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListView1.DoubleClick
Dim this As ListView = sender
Dim nstart As Integer = x
Dim spos As Integer = 0
Dim epos = this.Columns(0).Width
Dim i As Integer
For i = 0 To this.Columns.Count - 1
If nstart > spos And nstart < epos Then
subitemselected = i
Exit For
End If
spos = epos
epos += this.Columns(i).Width
Next
subitemtext = li.SubItems(subitemselected).Text
TextBox1.Size = New Size(epos - spos, li.Bounds.Bottom - li.Bounds.Top)
TextBox1.Location = New Point(spos + this.Location.X + 2, li.Bounds.Y + this.Location.Y)
TextBox1.Show()
TextBox1.Text = subitemtext
TextBox1.SelectAll()
TextBox1.Focus()
End Sub
Private Sub ListView1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListView1.MouseDown
li = sender.getitemat(e.X, e.Y)
x = e.X
End Sub