




Вам нужно использовать событие DataGridView.CellClick и просто проверить, что у вас есть правильный индекс столбца. Сделать это можно, выполнив следующие действия:
Create a new Windows Forms application
Drag a DataGridView onto the screen
In the design time properties, add a column to your grid of type DataGridViewLinkColumn
Make the DataPropertyName property to "Link" (no quotes).
In your forms constructor, paste this code under the call to InitializeComponent:
Ах да, вы делаете это в VB.NET, так что это будет:
Dim data As New DataTable()
data.Columns.Add(New DataColumn("Link", Type.GetType("System.String")))
Dim newRow As DataRow = data.NewRow()
newRow("Link") = "http://www.stackoverflow.com"
data.Rows.Add(newRow)
DataGridView1.DataSource = data
Consume the DataGridView.CellClick event
Private Sub DataGridView1_CellClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellClick
If (e.ColumnIndex = 0) Then
Dim link As String = DataGridView1(e.ColumnIndex, e.RowIndex).Value.ToString()
System.Diagnostics.Process.Start(link)
End If
End Sub
Время привязки Gridview
LetterB lb = new LetterB();
var letter = lb.GetLetter();
if (letter != null && letter.Count > 0)
{
dgvLetter.DataSource = letter;
DataGridViewLinkColumn lnkEdit = new DataGridViewLinkColumn();
lnkEdit.UseColumnTextForLinkValue = true;
lnkEdit.LinkBehavior = LinkBehavior.SystemDefault;
lnkEdit.HeaderText = "Edit";
lnkEdit.Name = "SiteName";
lnkEdit.LinkColor = Color.Blue;
lnkEdit.TrackVisitedState = true;
lnkEdit.Text = "Edit";
lnkEdit.UseColumnTextForLinkValue = true;
dgvLetter.Columns.Add(lnkEdit);
}
Нажмите Событие
private void dgvLetter_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
var senderGrid = (DataGridView)sender;
if (senderGrid.Columns[e.ColumnIndex] is DataGridViewLinkColumn && e.RowIndex >= 0)
{
//your code
}
}