在Winform DataGridView中创建响应式超链接

时间:2014-02-05 22:23:00

标签: c# winforms datagridview hyperlink

我有用C#编写的Winform。

具体来说,我有一个DataGridView控件,如下所示:

No.|Description   | Quantity|   file                  | 
 1 |Beaker        |    2    |c:\PDF\Beaker.pdf        |
 2 |Conical Flask |    21   |c:\PDF\Conical Flask.pdf |

我希望文件列包含超链接或按钮,单击该按钮或按钮会在用户的计算机上打开PDF文件。

提前致谢!

2 个答案:

答案 0 :(得分:1)

如果我理解你的问题,你想要使用的是DataGridViewLinkColumn。

然后,只需处理DataGridView.CellContentClicked事件。

在处理程序中,您可以访问单元格内容,如下所示:

using System.Diagnostics;
using System.IO;

...

    private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
    {
        string filename = dataGridView1[e.ColumnIndex, e.RowIndex].Value.ToString();
        if(e.ColumnIndex == 3 && File.Exists(filename))
        {
            Process.Start(filename);
        }

    }

干杯

答案 1 :(得分:0)

如前所述,您需要使用DataGridViewLinkColumn,然后处理DataGridView的{​​{1}}事件。

以下是您将如何实现这一目标:

CellContentClick

修改

注册活动非常重要。否则,事件处理程序代码将永远不会触发。

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
    if (this.dataGridView1.Columns[e.ColumnIndex] is DataGridViewLinkColumn)
    {
        Process.Start(this.dataGridView1[e.ColumnIndex, e.RowIndex].Value.ToString());
    }
}

如果出于某种原因,按钮是您的首选,那么您需要以类似的方式使用this.dataGridView1.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler( this.dataGridView1_CellContentClick);