【问题标题】:c# DataGridViewLinkColumn have cell value as image instead of text (Clickable/Linkable Image)c#DataGridViewLinkColumn 将单元格值作为图像而不是文本(可单击/可单击图像)
【发布时间】:2013-09-24 10:47:33
【问题描述】:

DataGridViewLinkColumn 中可以有图像而不是文本。 在下面的示例中,我们可以在单元格中使用搜索图标来代替“搜索”文本吗!?

    private void Form1_Load(object sender, EventArgs e)
    {
        DataGridViewLinkColumn c = new DataGridViewLinkColumn();
        dataGridView1.Columns.Add(c);
        dataGridView1.Rows.Add();
        dataGridView1.Rows[0].Cells[0].Value = "search";
    }

当我尝试将图像分配给单元格的值时,它没有显示,而是显示为“System.Drawing.Bitmap”

【问题讨论】:

  • 为什么不是带有点击事件的图像列?
  • @Colin Steel:但是在鼠标悬停时,手形光标没有显示出来。基本上我需要它,以便用户知道单击它时会打开一些东西,而不仅仅是一个图像按钮。

标签: c# datagridviewcolumn datagridviewlinkcolumn


【解决方案1】:

使用标准的DataGridViewImageColumn 显示图像,然后使用以下代码为DataGridView 创建DataGridView_CellMouseMove 事件

    private void DataGridView1_CellMouseMove(object sender, DataGridViewCellMouseEventArgs e)
    {
        if (e.ColumnIndex == DataGridViewImageColumn1.Index)
        {
            Cursor = Cursors.Hand;
        }
        else
        {
            Cursor = Cursors.Default;
        }
    }

如果需要,添加逻辑以检测行。

您的链接仍需要 DataGridView_CellMouseClick 事件。

您可能还需要一个DataGridView_MouseLeave 事件来确保将Cursor 设置回默认值。

【讨论】:

  • 这个解决方案在网络中很难找到,实际上在 SO 本身中也很难找到。这个真的不错。
猜你喜欢
  • 1970-01-01
  • 2016-12-30
  • 1970-01-01
  • 2023-04-03
  • 2012-06-26
  • 2012-12-03
  • 1970-01-01
  • 2020-07-31
  • 1970-01-01
相关资源
最近更新 更多