Here Mark Rideout是一位Microsoft开发人员,他解释了如何在DataGridView中创建进度条列,并为DataGridViewProgressColumn类提供了“裸骨”代码。他关于如何将其用于数据绑定datagridviews的说明是:
有些人,包括我自己不明白在数据绑定网格的情况下“更改具有0到100值的整数列的列类型”是什么意思,并且Mark似乎太忙而无法回答。有谁知道它是如何完成的?
以下是我案例的快速示例:
namespace Sample
{
public class Record
{
public int Id { get; set; }
public string Name { get; set; }
public int Progress { get; set; } // This is the int 0-100 field which
// has data for a progress bar
public Record()
{
}
public Record(int id, string name, int progress)
{
this.Id = id;
this.Name = name;
this.Progress= progress;
}
}
}
namespace Sample
{
public partial class SampleForm : Form
{
private BindingList<Record> records;
public SampleForm()
{
InitializeComponent();
}
public SampleForm(BindingList<Record> records)
{
InitializeComponent();
this.records = records;
}
private void SampleForm_Load(object sender, EventArgs e)
{
dataGridView1.DataSource = this.records;
}
}
}
我应该在什么时候将“Progress”列类型更改为DataGridViewProgressColumn,以及如何完成?
答案 0 :(得分:7)
据我所知,您需要将此类类型的列绑定到类型为Int32
的属性,并且可以包含0到100之间的值(百分比)。
数据录入类:
class Data
{
public int Progress { get; set; }
}
数据绑定:
var data = new List<Data>() {
new Data() { Progress = 50 },
new Data() { Progress = 60 },
new Data() { Progress = 30 },
new Data() { Progress = 92 },
};
this.dataGridView1.DataSource = data;
**这就是它的样子:**
在将文章添加到GridView之前,应该将文章中描述的类添加到项目中。
不要忘记允许的值仅为0到100。
<强>步骤强>
答案 1 :(得分:0)
我使用VB.NET attached Link无论如何都在C#中,因此您可以轻松理解它。
包含这两个类后,只需在表单中调用命名空间,构建解决方案,然后添加datagridview
控件并向控件添加类型为DataGridViewProgressColumn
的列。
因此,您可以使用以下代码填充控件。
DataGridView1.Rows.Add(20)
DataGridView1.Rows.Add(20)
P.S我的代码示例是在VB中,但我相信你可以弄清楚C#的等效内容
答案 2 :(得分:0)
这对我有用,所以也许这会对某人有所帮助...
progressBar1.Bounds = dgv.GetCellDisplayRectangle(columnIndex, rowIndex, true);