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中.对于"绑定",我的意思是每次我dequeue
或enqueue
队列中的项目DataGridView
得到更新(这样它总是代表队列的状态).
我试图用这种方式绑定它:
jobGridView.DataSource = _solutionQueue;
Run Code Online (Sandbox Code Playgroud)
但它不起作用,即使我使用update
或refresh
方法.如果您需要更多代码,请随时问:)
根据MSDN,DataGridView.DataSource
必须实现以下接口之一:
IList
IListSource
IBindingList
IBindingListView
本Queue<T>
类实现的父接口IList
,包括IEnumerable
和ICollection
,而不是IList
自己.
一个建议是使用LINQ List<DeployJob>
从队列中创建一个并绑定如下:
using System.Linq;
//code
jobGridView.DataSource = _solutionQueue.ToList();
Run Code Online (Sandbox Code Playgroud)
您可能希望确保并处理更新/修改队列的任何事件,并将DataGridView重新绑定到新创建的List