2009-12-04 42 views
3

我想在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

自己误解了这个问题两次之后,我想我会试图澄清你是什么。 :) – 2009-12-04 15:34:55

回答

1

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

2

队列的全部目的是,条目可以只在一个地方进行添加。所以将它绑定到UI网格以便更新它的想法是,呃,很有趣 - 用户界面应该如何显示?

您肯定必须考虑您自己的自定义集合,或者像您说的那样,从BindingList派生并处理相应地取消新。有关详细信息,请参阅MSDN article

+0

我不希望数据是可编辑的,只是显示它。 – 2009-12-04 15:10:57