Hi, I'm not too experienced with .NET programming, but I was wondering if anyone knows of a custom control in VB.NET that involves a list (sort of like a ListBox), with at least 2 columns, and the ability to select individual members of this list. I basically have a dynamic NameValueCollection I would like to populate this list with and allow users to select different items.

Does anyone know of a pre-made control like this?

Recommended Answers

All 2 Replies

You'll get that with ListView control.
Fill ListView control:

Dim TempStr(1) As String
Dim NewNode As ListViewItem
ListView1.View = View.Details
' FullRowSelect has to be True
ListView1.FullRowSelect = True
ListView1.Columns.Clear()
ListView1.Columns.Add("Column1", 100)
ListView1.Columns.Add("Column2", 100)
ListView1.Items.Clear()
TempStr(0) = "foo"
TempStr(1) = "bar"
NewNode = New ListViewItem(TempStr)
ListView1.Items.Add(NewNode)
TempStr(0) = "another"
TempStr(1) = "item"
NewNode = New ListViewItem(TempStr)
ListView1.Items.Add(NewNode)

and check where the mouse was clicked:

Private Sub ListView1_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListView1.MouseClick
  Dim HTInfo As ListViewHitTestInfo = ListView1.HitTest(e.Location)
  Dim TempStr As String
  HTInfo = ListView1.HitTest(e.Location)
  TempStr = HTInfo.SubItem.ToString
  MessageBox.Show(TempStr, _
    "SubItem", _
    MessageBoxButtons.OK, _
    MessageBoxIcon.Information)
End Sub

Of course you can have more than two columns if you need.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.