我有用C#编写的Winform。
具体来说,我有一个DataGridView
控件,如下所示:
No.|Description | Quantity| file |
1 |Beaker | 2 |c:\PDF\Beaker.pdf |
2 |Conical Flask | 21 |c:\PDF\Conical Flask.pdf |
我希望文件列包含超链接或按钮,单击该按钮或按钮会在用户的计算机上打开PDF文件。
提前致谢!
答案 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);
。