Ваш вопрос немного сбивает с толку. Вы упоминаете о добавлении нового пользователя, но фактически никогда не добавляете нового пользователя. Вместо этого AddUser просто загружает несколько пользовательских записей из базы данных и добавляет их в комбинированный список и выбирает каждую из них по очереди. Какой бы порядок записей не поступал из базы данных, определяется, какой из них будет выбран последним.
Исправление в три раза:
- Очистить список элементов комбинированного списка перед его повторным заполнением:
comboRecipient.Items.Clear();
Как есть, каждый раз, когда вы вызываете AddUser, вы снова добавляете всех пользователей.
- Порядок пользователей в вашем запросе, чтобы последний всегда был последним:
SELECT [User_ID], [User_First_Name], [User_Surname] FROM [EquipmentTracker].[dbo].[Users] ORDER BY [User_ID]
Предполагается, что User_ID является автоинкрементным полем. Если у вас есть столбец CreationDate
, вы можете использовать его вместо этого.
- Выберите последний элемент в выпадающем списке после добавления всех элементов:
Вместо:
comboRecipient.SelectedItem = newUser.newUser;
Использование:
comboRecipient.SelectedIndex = comboRecipient.Items.Count - 1
Это выберет последний элемент в выпадающем списке, если в выпадающем списке есть элементы. Если элементов нет, то результатом вычисления будет -1, что является действительным индексом для комбинированного списка (даже при использовании привязки данных).
Вы также можете заметить, что ваши элементы в выпадающем списке отображаются некорректно. Вы можете исправить это, установив:
comboRecipient.DisplayMember = "userName";
comboRecipient.ValueMember = "userID";
Это может быть установлено где угодно, но его стоит установить либо в конструкторе, либо в обработчике события Load.