Первоначальной причиной проблемы является то, что вы не указываете какие-либо значения для свойства Number в своих объектах IHuman.
Если вы измените строку кода, в которой вы создаете список, на что-то вроде:
private static readonly List<IHuman> Choices = new List<IHuman>() { new Student() {Number = 0}, new Teacher() {Number = 1} };
Или поместите значения по умолчанию в свойство Number каждого объекта, который реализует IHuman, как для свойства Category, тогда ваш комбинированный список должен работать правильно.
Кроме того, вы можете сделатькод, с которым немного проще работать.
Первое, что вы можете сделать, это добавить столбец в таблицу данных для поддержки привязки данных в столбце комбинированного списка, что позволит вам просто посмотреть на таблицу данных, чтобы узнать, что было выбрано.Код для этого приведен ниже:
DataColumn classIdColumn = new DataColumn("Class", typeof(string));
_schoolTable = new DataTable("School");
//Create a new column in the data table of type int
DataColumn humanIdColumn = new DataColumn("HumanId", typeof(int));
_schoolTable.Columns.AddRange(new[] { classIdColumn });
_schoolTable.Columns.AddRange(new[] { humanIdColumn });
DataRow row = _schoolTable.NewRow();
row["Class"] = "yr 5";
_schoolTable.Rows.Add(row);
// Bind DataGridView to DataTable, and add ComboBoxColumn.
dataGridView1.DataSource = _schoolTable;
DataGridViewComboBoxColumn listCol = new DataGridViewComboBoxColumn();
listCol.DisplayIndex = 1;
listCol.DataSource = GetChoices();
listCol.DisplayMember = "Category";
listCol.ValueMember = "Number";
//Set the DataPropertyName on the comboboxcolumn to enable databinding
listCol.DataPropertyName = "HumanId";
listCol.DefaultCellStyle.NullValue = "None";
dataGridView1.Columns.Add(listCol);
//Hide the autogenerated column HumanId - we only have it for the databinding
dataGridView1.Columns["HumanId"].Visible = false;
После этого изменения я настоятельно рекомендую использовать списки пользовательских объектов для вашего источника данных, а не использовать данные - я всегда считал, что это многоболее гибкий.