我目前正在开发某种下载管理器,作为一个更大项目的一部分。对于每次下载,我使用一个自定义类FileTransfer
来负责下载单个文件。
当下载大量文件时,它们存储在List<FileTransfer> transfers
类DownloadManager
中。
我想要的是 DataGridView 中这些下载的实时表示。
我现在手动将所有FileTransfer
属性添加到链接到 DataGridView 的 DataTable。这是静态的,因此需要手动更新进度。
我创建了这个函数:
for (int i = 0; i < transfers.Count; i++)
{
if (transfers[i].State == DownloadState.Active)
{
DataRow row = null;
try
{
row = dtTransfers.Select("ID=" + transfers[i].ID)[0];
}
catch { }
if (row != null)
row["progress"] = transfers[i].Progress;
}
}
这太脏、容易出错、太耗时等。
当 FileTransfer.Progress 值更改时,有没有办法让 DataTable 中的值自动更改?