如何将队列绑定到C#/ Winforms中的DataGridView?

LMW*_*-HH 3 c# data-binding queue datagridview winforms

我有一个标准的C#队列,声明如下:

private Queue<DeployJob> _solutionQueue = new Queue<DeployJob>();
Run Code Online (Sandbox Code Playgroud)

现在我想将这个队列绑定到一个DataGridView,它放在一个winform中.对于"绑定",我的意思是每次我dequeueenqueue队列中的项目DataGridView得到更新(这样它总是代表队列的状态).

我试图用这种方式绑定它:

jobGridView.DataSource = _solutionQueue;
Run Code Online (Sandbox Code Playgroud)

但它不起作用,即使我使用updaterefresh方法.如果您需要更多代码,请随时问:)

kav*_*man 5

根据MSDN,DataGridView.DataSource必须实现以下接口之一:

  • IList
  • IListSource
  • IBindingList
  • IBindingListView

Queue<T>类实现的父接口IList,包括IEnumerableICollection,而不是IList自己.

一个建议是使用LINQ List<DeployJob>从队列中创建一个并绑定如下:

using System.Linq;    

//code

jobGridView.DataSource = _solutionQueue.ToList();
Run Code Online (Sandbox Code Playgroud)

您可能希望确保并处理更新/修改队列的任何事件,并将DataGridView重新绑定到新创建的List