2009-12-04 84 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