Simon Simon - 1 month ago 10
Vb.net Question

How to write the contents of a dictionary to a MessageBox

In VB.NET I want to write the contents of a dictionary to a message box.

The dictionary is rather basic

Dim x As New Dictionary(Of Integer, Users)
x.Add("1", New Users("1", "Simon"))


The user class contains 2 attributes, user ID (Integer) and Username (String).

I am struggling to write the dictionary contents. I would like to write each dictionary entry to a string but i am having no success as I keep getting the error message:


Argument 'Prompt' cannot be converted to type 'String'.

Answer

You are passing a string where you specified an integer:

Fix:

Dim x As New Dictionary(Of Integer, Users)
x.Add(1, New Users(1, "Simon"))

Then to show the contents:

Dim sb As New StringBuilder
For Each item As KeyValuePair(Of Integer, Users) In x
  sb.AppendLine(item.Key & ") " & item.Value.ToString)
Next
MessageBox.Show(sb.ToString())

Your Users class would need to override the ToString function or change the ToString call to the property in Users that shows the user's name.

Update to Users class:

Public Class Users
  Private _p1 As Integer
  Private _p2 As String

  Sub New(ByVal p1 As Integer, ByVal p2 As String)
    _p1 = p1
    _p2 = p2
  End Sub

  Public Overrides Function ToString() As String
    Return _p2
  End Function
End Class