C# 在windows窗体的datagridview中显示图标而不是真/假
我有一个Windows窗体中的datagridview,它显示数据库表的内容, 表类型的一列是布尔型的,因此在datagridview中显示true/false, 但我想自定义它,以显示图标或图像,如接受或拒绝图标。我在项目资源中有这些图标 这是我的密码C# 在windows窗体的datagridview中显示图标而不是真/假,c#,winforms,datagridview,C#,Winforms,Datagridview,我有一个Windows窗体中的datagridview,它显示数据库表的内容, 表类型的一列是布尔型的,因此在datagridview中显示true/false, 但我想自定义它,以显示图标或图像,如接受或拒绝图标。我在项目资源中有这些图标 这是我的密码 var cars = (from u in db.Cars .......... select new { ..... ....
var cars = (from u in db.Cars
..........
select new
{
.....
.....
Approved = u.Treated == true ? Resources.approved : Resources.Cancel // Here Not working
}).ToList();
if (cars != null)
{
dgvCars.DataSource = null;
dgvCars.DataSource = cars;
}
在Approved单元格中,我想显示其中一个图标,具体取决于true或false。我按照你在代码中看到的做了
Approved = u.Treated == true ? Resources.approved : Resources.Cancel
但不起作用。也许我必须在我的Fomatingcell事件中编写一些代码,但我不知道如何做到这一点。请帮忙
DataGridViewImageColumn
能够显示图像。默认情况下,
DataGridView
会根据值类型自动生成列<如果值是字节数组(byte[]
),则默认情况下将生成code>DataGridViewImageColumn
在你的情况下,类型是不同的。你可以用两种方法来解决
第一:将图像转换为字节数组 第二:
手动创建图像列并将其绑定到图像属性
// Execute it once when initializing datagridview
var approvedColumn = new DataGridViewImageColumn
{
Name = "dgvCars_Approved",
HeaderText = "Approved",
DataPropertyName = "Approved", // This will bound column to the property of the object
};
dgvCars.Columns.Add(approvedColumn);
// DataGridView will automatically pick up correct image
var cars = (
from u in db.Cars
..........
select new
{
.....
.....
Approved = u.Treated == true ? Resources.approved : Resources.Cancel
}).ToList();
// Check for null is redundant, because ToList() never returns null
// Because cars is a new instance
// set .DataSource to null before actual value is redundant as well
dgvCars.DataSource = cars;
第二种方法会给自动生成的列带来一些麻烦,但我建议通过设计器手动创建所有必需的列,或者使用代码手动创建所有必需的列。预定义列将提供对视图行为和灵活性的更多控制。感谢您的回复,但我发现以下错误。“无法创建'system.Drawing.Bitmap'类型的constatnt值。在此上下文中仅支持基元类型或枚举类型”这与我尝试仅使用Approved=u时遇到的错误相同。Treated==true?资源。已批准:资源。取消