2009-12-04 7 views
3

Queue의 항목을 Windows Forms의 Gridview에 표시하고 싶습니다. 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) { ... } 
} 
+0

질문을 두 번 오해 한 후에 나는 그것이 당신이 무엇인지 명확히하는 데 찌르기를 생각했습니다. :) –

답변

1

대기열을 QueueForDisplay로 하위 클래스 화합니다. 생성자는 뷰 컨트롤을 사용합니다. Enqueue 및 Dequeue 메서드를 재정의합니다. 이러한 재정의에서는 뷰 컨트롤을 업데이트합니다. 꽉 조이는 커플 링이 마음에 들지 않는다면 Queue를 QueueWithEvents로 서브 클래스 화하고 OnEnqueue 및 OnDequeue 이벤트를 제공하면됩니다.

2

큐의 전체 목적은 항목이 하나 개의 장소에 추가 할 수 있다는 것입니다. 그래서 이것을 UI 그리드에 바인딩하여 업데이트 할 수 있다는 생각은 재미 있습니다 - UI는 어떻게 보이나요?

사용자 정의 컬랙션을 고려해야합니다. 또는 말한대로 BindingList에서 파생되어 처리해야합니다. 그에 따라 CancelNew. 자세한 내용은 MSDN article을 참조하십시오.

+0

데이터를 편집 할 수 없도록 표시하고 싶습니다. –