DataGridViewLinkColumn  
Frank Dzaebel, erstellt am: 8.8.2006, zuletzt geändert:  13.8.2006
Kategorie: DataGridView, .NET-Version: 2.0, [Download]

Hyperlinks im DataGridView funktional einbinden mit der DataGridViewLinkColumn. Das ist noch recht selten Online zu finden. Hier eine Beispiel-Implementation. Zunächst wird ein DataSet im DataSet-Designer erstellt. Danach kann der unten stehender Code benutzt werden.

 
LinkLabel wären zwar auch über das Datenquellen-Fenster mittels Drag&Drop erstellbar,
allerdings werden diese nicht im DataGridView dargestellt, sondern nur, wenn man sie einzeln in die Form zieht.

using System;
using System.Windows.Forms;
using System.Drawing;
using System.Diagnostics;

namespace DgvHyperlink
{
  public partial class Form1 : Form
  {
    public Form1(){InitializeComponent();}

    DataSet1.DatenDataTable dt;
    DataGridView dgv;
    DataSet1 ds = new DataSet1();
    
    private void Form1_Load(object sender,EventArgs e)
    {
      dgv = new DataGridView(); dt = ds.Daten;
      dgv.Width = 500;
      dt.AddDatenRow("Dagobert Duck",true , 1, "http://Dzaebel.NET");
      dt.AddDatenRow("Donald Duck"  ,false, 3, @"c:\AddIns.doc");
      dt.AddDatenRow("Gustav Gans"  ,false, 0, "http://www.Google.de");
      dt.AddDatenRow("Trick Duck"   ,false, 0, "ftp://strato.de");
      dgv.DataSource = dt;
      dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
      dgv.Location = new Point(15,15); this.Controls.Add(dgv);
      dgv.Columns[dt.LinkColumn.Ordinal].Visible = false;      
      if (!dgv.Columns.Contains(dlc)) AddLinkColumn(dgv);
      dgv.CellContentClick += new DataGridViewCellEventHandler(dgv_CellContentClick);
    }

    void dgv_CellContentClick(object sender,DataGridViewCellEventArgs e)
    {
      if (e.ColumnIndex == dt.LinkColumn.Ordinal+1)
        Process.Start(dgv.CurrentCell.Value.ToString());
    }

    DataGridViewLinkColumn dlc = new DataGridViewLinkColumn();
    private void AddLinkColumn(DataGridView dgv)
    {
      dlc.HeaderText = "Link";
      dlc.DataPropertyName = "Link";
      dlc.ActiveLinkColor = Color.White;
      dlc.LinkBehavior = LinkBehavior.SystemDefault;
      dlc.LinkColor = Color.Blue;
      dlc.TrackVisitedState = true;
      dlc.VisitedLinkColor = Color.YellowGreen;
      dgv.Columns.Add(dlc);
    }
  }
}