2012-01-18 64 views
1

我有一个标准的C#队列,声明如下:如何在C#/ Winforms中将队列绑定到DataGridView?

private Queue<DeployJob> _solutionQueue = new Queue<DeployJob>(); 

现在我想这个队列绑定到一个DataGridView的,这是摆一个winform内。使用“绑定”,我的意思是每次我dequeueenqueue队列中的一个项目DataGridView得到更新(以便它始终代表队列的状态)。

我曾尝试这种方式将其绑定:

jobGridView.DataSource = _solutionQueue; 

但它不工作,即使我用updaterefresh方法。如果你需要更多的代码,请随时问:)

回答

3

MSDNDataGridView.DataSource必须实现以下接口之一:

  • IList
  • IListSource
  • IBindingList
  • IBindingListView

Queue<T>类实现了IList的父接口,包括IEnumerableICollection,但不包括IList本身。

一个建议是使用LINQ创建队列中的List<DeployJob>并绑定像这样:

using System.Linq;  

//code 

jobGridView.DataSource = _solutionQueue.ToList(); 

你想确保并处理更新/修改队列中的任何事件,并重新绑定将DataGridView添加到新创建的列表中

相关问题