В лучшем случае, это предположение, потому что утверждение о том, что оно терпит неудачу в первой строке, не имеет смысла.
Мои психические силы говорят мне, что это на самом деле терпит неудачу при
string id = view["Course_Id"].ToString();
потому что представление является нулевым.Проблема в том, что
DataRowView view = listBox1.Items[index] as DataRowView;
пытается привести элементы из ListBox в DataRowView.Это всегда будет возвращать ноль, если по какой-то (нечетной) причине вы не заполнили свой ListBox.Items коллекцией DataRowView.
EDIT
Возможно, заполнение listBox1DataRowView, но вы заполняете listBox2 с помощью System.String:
string name = view["Course_Name"].ToString();
listBox2.Items.Add(name);
Попробуйте изменить это значение на
//string id = view["Course_Id"].ToString();
//string name = view["Course_Name"].ToString();
listBox2.Items.Add(view);