Since the values in your ListBox are single strings, you'll need to manually separate the name from the value. The ListBox control has a few ways to get the selected text. SelectedItem could return undesired results since ListBox items could be any object. ListBox.Text will return the actively selected text if you limit your selections to one item.
To split your name from value, try Strings.Split(": ", clb_Properties.Text). This will give you an array of two elements, your name and the value.
If you'd like a more elegant solution, I might suggest using a DataGridView control. It gives you the ability to add columns and create something that looks more like the Custom Properties UI in SOLIDWORKS.
Try using the method from the link below to replace the selected item in your ListBox with the new text. FYI, SelectedIndex returns the index number of the selected ListBox Item. It isn't something you can replace.
Hope that helps!