我的表单具有DataGridView控件,并且Column 0
的类型为DataGridViewImageColumn
。
第一次显示Form时,将显示一个空的DataGridView控件,并且Column 0
中有一个带有红色X的矩形。
当我向控件添加一行时,将显示相同的图标。
如何摆脱带有红色X的框,什么也不显示?
我尝试了以下方法。 Globals.ERROR_LIST_SEVERITY
的值为0。
dataGridView_ErrorList.Columns[Globals.ERROR_LIST_SEVERITY].DefaultCellStyle.NullValue = null;
还尝试了蛮力只是为了看看是否可行:
dataGridView_ErrorList.Rows[0].Cells[0].Value = null;
有人知道为什么这行不通吗?我需要创建空白图像并将值分配给空白图像吗?
设置null值应该起作用时,这似乎很愚蠢。
答案 0 :(得分:0)
如MSDN文档中的DataGridViewImageColumn类的“备注”部分所述,要用自定义图像替换默认错误图像,需要自DataGridViewImageCell派生的自定义类。
这样可以覆盖DefaultNewRowValue属性(通常为只读)来设置自定义图像。
同样,最终,将覆盖PaintErrorIcon方法。
这是自定义 DataGridViewImageColumn
的实现,结合了自定义 DataGridViewImageCell
,可以将其配置为在以下情况下显示其他默认图片:没有指定图像,或者绑定字段的值为空。
如果未指定图像,则该单元格还将在DataGridView New Row 中显示空白内容。
类构造函数有多个重载。您可以指定:
ImageColumn
)。 ImageColumn
)。 DataPropertyName
(默认为string.Empty
)。 要将自定义图像列添加到DataGridView,请使用 DataGridView.Columns.Add()
方法,并传递一个新的 DGVCustomImageColumn
,并根据需要进行初始化。 br />
在这里,我只是设置Column.Name
,HeaderText
和DataPropertyName
:
dataGridView1.Columns.Add(new DGVCustomImageColumn("ImageCol", "Image", "ImageField"));
DGVCustomImageColumn
类:
using System.Drawing;
using System.Windows.Forms;
class DGVCustomImageColumn : DataGridViewImageColumn
{
private Bitmap dgvErrorBitmap = new Bitmap(1, 1);
public DGVCustomImageColumn()
: this("ImageColumn", "ImageColumn", string.Empty, null) { }
public DGVCustomImageColumn(string colName, string headerText)
: this(colName, headerText, string.Empty, null) { }
public DGVCustomImageColumn(string colName, string headerText, string dataField)
: this(colName, headerText, dataField, null) { }
public DGVCustomImageColumn(string colName, string headerText, string dataField, Bitmap errorImage)
{
this.CellTemplate = new CustImageCell(errorImage ?? dgvErrorBitmap);
this.DataPropertyName = dataField;
this.HeaderText = headerText;
this.Image = errorImage ?? dgvErrorBitmap;
this.Name = colName;
}
protected class CustImageCell : DataGridViewImageCell
{
public CustImageCell() : this(null) { }
public CustImageCell(Bitmap defaultImage) => this.DefaultNewRowValue = defaultImage;
public override object DefaultNewRowValue { get; }
}
}
答案 1 :(得分:0)
我遇到过这个问题,但我用下面的语句克服了它
import React from 'react'
import '../App.css'
const ListComponent = ({ name, description, language, html_url }) => {
return (
<div className='card'>
<div className='card-body'>
<h2><a href={html_url} target='_blank' rel="noreferrer">{name}</a></h2>
</div>
<div className='card-body'>
<p>{description}</p>
</div>
<div className='card-body'>
<p>Languages: {language}</p>
</div>
</div>
);
}
export default ListComponent;