Как я могу изменить имя, отображаемое в поле со списком? - PullRequest
0 голосов
/ 27 февраля 2020

Я строю список учеников и не знаю, как решить проблему. Я использую Combobox для отображения всех студентов, которые были созданы. Я сохраняю студентов прямо в Combobox, используя этот код:

private void btnSpeichern_Click(object sender, EventArgs e)
        {
            Student StudentSave = new Student
            {
                ID = txtStudentID.Text,
                FirstName = txtFirstName.Text,
                LastName = txtLastName.Text,
                Age = nudAge.Value,
                Height = nudHeight.Value,
                Schoolclass = txtSchoolClass.Text,
                Gender = cbxGender.Text,
            };

            cbxStudentIDs.Items.Add(StudentSave);
        }

cbxStudentIDs обозначает Combobox. Я хотел бы, чтобы отображаемое имя студента отображалось в качестве имени, но оно отображает «WindowsFormsApp2.Form1 + Student» для каждого сохраняемого мной студента.

Я использую Visual Studio 2019 C#. Спасибо за любой полезный совет!

Ответы [ 2 ]

2 голосов
/ 27 февраля 2020

Вы можете начать с объявления свойства BindingList<Student>. Например,

BindingList<Student> StudentCollection = new BindingList<Student>();

Затем вы можете привязать этот список к ComboBox, используя следующее.

cbxStudentIDs.DataSource = StudentCollection;
cbxStudentIDs.DisplayMember = "ID";

DisplayMember гарантирует, что свойство идентификатора Student используется в качестве строки вывода для ComboBox.

Теперь вы можете продолжить добавление ученика во вновь созданную коллекцию, так как

Student StudentSave = new Student
            {
                ID = txtStudentID.Text,
                FirstName = txtFirstName.Text,
                LastName = txtLastName.Text,
                Age = nudAge.Value,
                Height = nudHeight.Value,
                Schoolclass = txtSchoolClass.Text,
                Gender = cbxGender.Text,
            };
 StudentCollection.Add(StudentSave);

BindingList<T> поддерживает двустороннюю привязку данных. Это обеспечит Когда вы добавляете новый элемент в свою коллекцию (StudentCollection), ComboBox обновляется соответствующим образом.

1 голос
/ 27 февраля 2020

Вы не хотите добавлять весь объект в выпадающий список, просто список идентификаторов. Таким образом, вы изменили бы cbxStudentIDs.Items.Add(StudentSave); на cbxStudentIDs.Items.Add(StudentSave.ID);

Затем вам нужно будет сохранить фактическое состояние объекта учащегося в другом месте, которое вы можете связать с ним, используя идентификатор, будь то база данных или находящаяся в памяти Коллекция зависит от вас.

В качестве альтернативы, вы можете связать источник данных с данными ученика в качестве источника для комбинированного списка и установить DisplayMember как подробно здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...