CheckedListBox проверял элементы для преобразования объекта? - PullRequest
4 голосов
/ 04 декабря 2010

У меня есть коллекция с именем Subjects с атрибутами как Name в строке и SubjectCode в int. Я передал это проверенному списку. При нажатии кнопки я хочу получить коллекцию всех элементов, проверенных пользователем, преобразовать ее в коллекцию Subjects.

плз любой может помочь ....

Спасибо заранее ...

Ответы [ 2 ]

3 голосов
/ 04 декабря 2010

CheckedListBox может хранить любой тип объекта класса. Вам просто нужно переопределить ToString (), которое показывает описание объекта. Например:

    class Subject {
        public string Name { get; set; }
        public int Code { get; set; }
        public override string ToString() { return Name; }
    }

Вы можете добавить их в коллекцию Предметов. Чтение обратно выбранных просто возвращает объект обратно в Subject. Например:

public partial class Form1 : Form {
    public Form1() {
        InitializeComponent();
        checkedListBox1.Items.Add(new Subject { Name = "Hans", Code = 42 });
        checkedListBox1.Items.Add(new Subject { Name = "User", Code = 486196 });
    }

    private void button1_Click(object sender, EventArgs e) {
        var selected = new List<Subject>();
        foreach (int index in checkedListBox1.SelectedIndices) {
            selected.Add((Subject)checkedListBox1.Items[index]);
        }
        // etc...
    }
}
0 голосов
/ 04 декабря 2010

Как насчет этого?

Subject[] myObjects;

void onButtonPressed(object sender, EventArgs e)
{
      foreach (int i in this.checkedItems.CheckedIndecies)
      { 
           Subject obj = myObjects[i];
      }
}

Вы можете напрямую обращаться к объектам, но вы рискуете сценарием, в котором объекты в списке не относятся к типу субъекта, и это дает вам больше возможностей для расширения в будущем..

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