Использование очереди в качестве источника данных - PullRequest
3 голосов
/ 04 декабря 2009

Я хотел бы отобразить элементы из Queue в Gridview в Windows Forms. Я могу установить для атрибута источника данных Gridview значение Queue, но оно не будет автоматически обновлено. Я знаю, что могу использовать класс BindingList, но тогда я теряю функциональность Queue.

Есть ли способ объединить два класса или мне нужно реализовать одно из поведений в производном классе?

То, что я делаю, обрабатывает список элементов, я хочу показать остальные в сетке. Данные не должны изменяться пользователем, но я хочу, чтобы GridView обновлялся по мере изменения содержимого очереди.

Пример:

В форме:

Proccessor pro = new Processor();
gridview.DataSource = pro.Items;

В классе:

class Proccessor {
    Queue<DataBlock> _queue = new Queue();

    public Queue<DataBlock> Items  { 
        get { 
            return _queue;
        }
    }

    public void AutoProcess() {
        while (_queue.Count > 0) {
            Process(_queue.Dequeue());
        }
    }

    private void Process(DataBlock db) { ... }
}

Ответы [ 2 ]

2 голосов
/ 04 декабря 2009

Целью очереди является то, что записи могут быть добавлены только в одном месте. Так что идея связать это с сеткой пользовательского интерфейса, чтобы его можно было обновить, интересна - как должен выглядеть пользовательский интерфейс?

Вам определенно придется рассмотреть собственную коллекцию или, как вы говорите, наследовать от BindingList и обрабатывать, например, ОтменаНовый соответственно. Подробнее см. Статью MSDN .

1 голос
/ 04 декабря 2009

Я бы создал подкласс Queue как QueueForDisplay. Конструктор взял бы управление представлением. Я бы переопределил методы Enqueue и Dequeue. В этих переопределениях я бы обновил элемент управления представлением. Если вам не нравится тесная связь, вы можете просто создать подкласс Queue как QueueWithEvents и предоставить события OnEnqueue и OnDequeue.

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