2017-10-20 32 views
0

J'ai un datagridview avec 3 liens, je veux être en mesure de cliquer sur le lien et l'avoir ouvert, je ne me sers de cetteDatagridview cadres multiples liens

 private void Dgv_View_Employees_CellContentClick_1(object sender, DataGridViewCellEventArgs e) 
     {    
      if (e.RowIndex >= 0) 
      { 
       DataGridViewRow row = this.Dgv_View_Employees.Rows[e.RowIndex]; 
       string filenametodisplay = row.Cells[8].Value.ToString(); 
       string targetPath = @"C:\root"; 
       string open = System.IO.Path.Combine(targetPath + filenametodisplay); 
       System.Diagnostics.Process.Start(open); 
      } 
     } 

et il fonctionne très bien s'il est seulement un lien, le problème est, il semble ouvrir le premier lien et ignore le reste, que dois-je changer pour ouvrir le lien dans la cellule correcte?

+0

Y at-il 3 cellules avec un lien dans chaque cellule ou sont là trois liens dans une cellule? Quel type de datagridviewcell utilisez-vous? Qu'avez-vous essayé jusqu'à présent? –

+0

Il s'agit de 3 cellules avec un lien, j'ai utilisé DataGridViewLinkColumns et essayé avec DataGridViewTextBoxColumns, ils ouvrent le lien mais ils n'ouvrent que le premier, peu importe celui sur lequel je clique, j'ai essayé d'assigner la cellule spécifique à un variable avec l'idée d'avoir des déclarations if() pour le comparer à un certain nombre de gamme, mais je n'ai pas eu de succès – Christiaan

Répondre

2

Vous pouvez utiliser la propriété DataGridViewCellEventArgs.ColumnIndex pour obtenir une valeur indiquant l'index de colonne de la cellule pour laquelle l'événement se produit.

Par exemple, si vous avez URL dans la colonne 8, 10 et 14:

if (e.RowIndex >= 0) 
{ 
    if (e.ColumnIndex == 8 || e.ColumnIndex == 10 || e.ColumnIndex == 14) 
    { 
     DataGridViewRow row = this.Dgv_View_Employees.Rows[e.RowIndex]; 
     string filenametodisplay = row.Cells[e.ColumnIndex].Value.ToString(); 
     string targetPath = @"C:\root"; 
     string open = System.IO.Path.Combine(targetPath + filenametodisplay); 
     System.Diagnostics.Process.Start(open); 
    } 
}