Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在windows窗体的datagridview中显示图标而不是真/假_C#_Winforms_Datagridview - Fatal编程技术网

C# 在windows窗体的datagridview中显示图标而不是真/假

C# 在windows窗体的datagridview中显示图标而不是真/假,c#,winforms,datagridview,C#,Winforms,Datagridview,我有一个Windows窗体中的datagridview,它显示数据库表的内容, 表类型的一列是布尔型的,因此在datagridview中显示true/false, 但我想自定义它,以显示图标或图像,如接受或拒绝图标。我在项目资源中有这些图标 这是我的密码 var cars = (from u in db.Cars .......... select new { ..... ....

我有一个Windows窗体中的datagridview,它显示数据库表的内容, 表类型的一列是布尔型的,因此在datagridview中显示true/false, 但我想自定义它,以显示图标或图像,如接受或拒绝图标。我在项目资源中有这些图标 这是我的密码

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?资源。已批准:资源。取消