datagridview使用带有列href链接的数据表

本文关键字:href 链接 数据表 datagridview | 更新日期: 2023-09-27 18:29:43

我正在想办法让我的c#winform项目中的一个有界数据网格视图列像href链接一样显示。问题是链接点击是有效的,但任何普通用户都不会意识到他们可以点击字段,因为它显示为字符串。我需要字段显示为蓝色,带下划线,鼠标指针变成一只手。。。等

我之前在Datagrid中使用数据集时就能够做到这一点。我去了设计师那里,选择了"添加列",并将其添加为"DataGridViewLinkColumn"。我最近将项目更改为使用数据表,我意识到字段不再显示为可点击(如果我点击它确实有效)。

有什么理想的方法可以相对轻松地完成这项工作吗?我已经搜索过了,我有点惊讶,我似乎找不到一个简单的解决方案。

datagridview使用带有列href链接的数据表

将链接单元格的类型更改为DataGridViewLinkCell,然后处理单元格上的单击,如下所示:

void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
    foreach (DataGridViewRow r in dataGridView1.Rows)
    {
        if (System.Uri.IsWellFormedUriString(r.Cells["Links"].Value.ToString(), UriKind.Absolute))
        {
            r.Cells["Links"] = new DataGridViewLinkCell();
            DataGridViewLinkCell c = r.Cells["Links"] as DataGridViewLinkCell;
        }
    }
}
// And handle the click too
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
    if (dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex] is DataGridViewLinkCell)
    {
        System.Diagnostics.Process.Start( dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value as string);
    }
}

这可能会有所帮助:

        DataGridViewLinkColumn col1 = new DataGridViewLinkColumn();
        dataGridView1.Columns.Add(col1);
        dataGridView1.Columns[0].Name = "Links";
        DataGridViewRow dgvr = new DataGridViewRow();
        dgvr.CreateCells(dataGridView1);
        DataGridViewCell linkCell = new DataGridViewLinkCell();
        linkCell.Value = @"http:''www.google.com";
        dgvr.Cells[0] = linkCell;
        dataGridView1.Rows.Add(dgvr);

它创建一个col,然后创建一个link类型的单元格。您可以使用foreach循环来更有序、更快地处理更多项目。

祝你好运!

查看DataGridViewLinkColumn.LinkBehavior属性。它可以设置为AlwaysUnderline。

至于颜色,只需在DataGridViewLinkColumn上使用*LinkColor属性即可。

干杯

您可以在datagridview中为该列上色。您可以在DataBindingComplete事件中这样做:

private void dataGridView1_DataBindingComplete(object sender,
    DataGridViewBindingCompleteEventArgs e)
{
    if(this.mydatagridview.Columns["YourLinkColumnName"] != null)
    {    
        this.mydatagridview.Columns["YourLinkColumnName"].DefaultCellStyle.Font = ...
        this.mydatagridview.Columns["YourLinkColumnName"].DefaultCellStyle.ForeColor = ...
    }
}

你可以把字体设置成你喜欢的样子(如下划线、彩色等)

或者,如果预先制作了列(而不是自动生成的列),则可以在设计器中更改默认单元格样式。