我想在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) { ... }
}
答案 0 :(得分:2)
队列的整个目的是只能在一个地方添加条目。所以将它绑定到UI网格以便可以更新的想法是,呃,有趣的 - UI应该怎么样?
你肯定要考虑自己的自定义集合,或者如你所说,从BindingList派生并处理例如取消新的相应。有关详细信息,请参阅MSDN article。
答案 1 :(得分:1)
我将Queue子类化为QueueForDisplay。构造函数将采用视图控件。我会覆盖Enqueue和Dequeue方法。在那些覆盖中,我将更新视图控件。如果你不喜欢紧耦合,你可以简单地将Queue子类化为QueueWithEvents并提供OnEnqueue和OnDequeue事件。