使用队列作为数据源

时间:2009-12-04 14:55:53

标签: c# data-binding

我想在Windows窗体的Gridview中显示Queue中的项目。我可以将Gridview的datasource属性设置为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 个答案:

答案 0 :(得分:2)

队列的整个目的是只能在一个地方添加条目。所以将它绑定到UI网格以便可以更新的想法是,呃,有趣的 - UI应该怎么样?

你肯定要考虑自己的自定义集合,或者如你所说,从BindingList派生并处理例如取消新的相应。有关详细信息,请参阅MSDN article

答案 1 :(得分:1)

我将Queue子类化为QueueForDisplay。构造函数将采用视图控件。我会覆盖Enqueue和Dequeue方法。在那些覆盖中,我将更新视图控件。如果你不喜欢紧耦合,你可以简单地将Queue子类化为QueueWithEvents并提供OnEnqueue和OnDequeue事件。