![](/img/trans.png)
[英]How to use DataGridViewLinkColumn for display a Link in one columns
[英]Change Display Value of DataGridViewLinkColumn
我有一个datagridview,其中datagridviewlinkcolumn绑定到对象列表中的文本链接。 文本链接是指向文件的链接,这些文件被深埋在网络存储中,从而形成了长链接。 有什么方法可以更改linkcolumn的链接显示值以仅显示每个完整链接的一部分? 即-仅文件名本身?
我读过您可以为链接列的显示值使用相同的标题文本,但是我想知道所有显示值是否可以不同。
因此,总而言之,是否可以在linkcolumn中显示文件链接的一部分,而我要显示的所有部分都不同,并且仍然具有指向完整文件路径的实际链接?
我找到了一种更好的方法来实现这一目标。
首先,在创建DataGridViewLinkColumn
将UseColumnTextForLinkValue = false
设置UseColumnTextForLinkValue = false
将DataGridViewLinkColumn
的Text
属性设置为深埋在网络存储中的文件的完整路径 。
现在,处理DataGridView
CellFormatting
事件,并将单元格的Value
属性设置为链接的显示名称。
private void dataGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if (excelDataGridView.Columns[e.ColumnIndex].Name.Equals("Links"))
{
if(e.Value != null)
e.Value = Path.GetFileName(e.Value.ToString()); //change the display name for Hyperlink
}
}
要在单击链接时执行任何操作,您需要按以下方式处理DataGridView
CellContentClick
事件
private void dataGridView_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if(e.ColumnIndex == excelDataGridView.Columns["Links"].Index) //Handling of HyperLink Click
{
string cellValue = excelDataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
Process.Start(cellValue); //assumes the link points to the text file and opens it in the default text editor
}
}
弄清楚了。
不知道是否有更好的方法可以执行此操作,但是我在对象中添加了链接的简化版本,并且在我的dataGridView1_CellContentClick
事件中,我获得了与行关联的对象(dataGridView1.Rows[e.RowIndex].DataBoundItem)
,然后在返回的对象中的标准文件路径上调用System.Diagnostics.Process.Start()
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.