首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DataGridViewImageColumn红色x

DataGridViewImageColumn红色x
EN

Stack Overflow用户
提问于 2009-06-02 04:42:17
回答 6查看 9.2K关注 0票数 5

我已经创建了一个DataGridView并添加了一个DataGridViewImageColumn (使用设计器)。

DataGridView的值为"AllowUserToAddRows = true“,因此会显示一个空白行,供用户输入新行。在这个空白行中,DataGridViewImageColumn显示一个红色的x。我希望始终在列中显示相同的图像,而不管该行是否包含任何数据(我绑定了单元格的click事件,因此使用DataGridViewImageColumn作为按钮)。

我怎么去掉红色的x?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-06-09 14:38:01

我使用ImageList来保存我所有的图片,但这里有一个精简的版本,应该会有所帮助。您设置该值是正确的,但是您应该将其设置为位图的null等效值,这只是一个静态空白图像。我使用:

代码语言:javascript
复制
e.Value = (imageIndex != int.MinValue) ? imageList.Images[imageIndex] : nullImage;

其中,nullImage在类的前面定义为:

代码语言:javascript
复制
private readonly Image nullImage = new Bitmap(1, 1);
票数 4
EN

Stack Overflow用户

发布于 2010-11-25 02:29:11

我查看了这些解决方案,使其有效的方法是在构造函数中调用InitializeComponent()使数据绑定行的默认图像成为空图像之后执行此操作

代码语言:javascript
复制
dataGridView1.Columns[0].DefaultCellStyle.NullValue = null;

并挂钩RowPrePaintEvent以删除网格末尾空行的红色X,因为AllowUserToAddRows = true

代码语言:javascript
复制
private void dataGridView1_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e)
{
      if (e.RowIndex >= numberOfRows)
      {
           dataGridView1.Rows[e.RowIndex].Cells[0].Value = null;
      }
}

其中numberOfRows是网格中的有效行数。我花了几个小时来处理这件事。希望这不会让其他人头疼。

票数 2
EN

Stack Overflow用户

发布于 2011-09-19 20:53:23

我像这样使用了grid.row的IsNewRow属性

代码语言:javascript
复制
private void dgUserFileList_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e) {
      DataGridViewRow row = dgUserFileList.Rows[e.RowIndex];
      if (row.IsNewRow) {
          row.Cells[0].Value = null;
        }
      }
    }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/937919

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档