Credo che a chi ha deciso di far fuori la vecchia e cara proprietà ItemData dalle ComboBox e ListBox fischieranno spesso le orecchie.

In VB .NET questo problema può essere risolto in diversi modi, il più semplice dei quali mi sembra quello di ricorrere ad una struttura di dati.
In pratica occorre creare una struttura formata da due campi, nel tuo caso id e nome
codice:
    Public Structure IdNome
        Public Id As Integer
        Public Nome As String
    End Structure
e popolare la ListBox con elementi di questa struttura
codice:
        Dim oIdNome As IdNome

        oIdNome.Id = ...
        oIdNome.Nome = ...
        ListBox1.Items.Add(oIdNome)
	...
Per fare in modo che la ListBox elenchi solo i campi Nome occorre effettuare l'overriding del metodo ToString, cosa che può essere fatta anche all'interno della struttura
codice:
    Public Structure IdNome
        Public Id As Integer
        Public Nome As String
        
	Public Overrides Function ToString() As String
            Return Nome
        End Function
    End Structure
Al momento della selezione di un elemento nella ListBox, si può riportare l'elemento selezionato nella strutttura
codice:
        oIdNome = CType(ListBox1.Items(ListBox1.SelectedIndex), oIdNome)
con la opportuna conversione di tipo.

Spero ti sia utile.