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

我正在试图弄清楚如何在我的c#winform项目中获得一个有界的datagridview列,以显示为href链接。 问题是链接点击有效,但任何普通用户都不会意识到他们可以单击该字段,因为它显示为字符串。 我需要字段显示为蓝色,带下划线,鼠标指针变成手……等等。

当我在Datagrid中使用数据集时,我能够完成此任务。 我去了设计师并选择了“添加列”并将其添加为“DataGridViewLinkColumn”。我最近更改了项目以使用数据表,我意识到这些字段不再显示为可点击(如果我点击它确实有效)。

任何理想如何相对轻松地完成这一任务? 我搜索过,有点惊讶,我似乎无法找到一个简单的解决方案。

将链接的单元格类型更改为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 = ... } } 

您可以将字体设置为您喜欢的字体(即下划线,彩色等)。

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