Well, what did you expect?
Look at your code:
foreach (string dir in dirs)
listBox1.Items.Add(dir);
DirectoryInfo dir = (DirectoryInfo)listBox1.SelectedItem;
So every item in the ListBox os a string, and you are trying to cast it to a DirectoryInfo. There is no such cast!
Try:
DirectoryInfo dir = new DirectoryInfo(listBox1.SelectedItem);