2012-02-16 5 views
3

DataGridViewLinkCellのディスプレイにsearchのようなものを表示できますが、リンクはhttp://google.comですか?C#DataGridViewLinkCell Display

DataGridViewを実際のリンクで散りばめないでください。

+1

あなたは –

答えて

2
private void Form1_Load(object sender, EventArgs e) 
     { 
      DataGridViewLinkColumn c = new DataGridViewLinkColumn(); 
      dataGridView1.Columns.Add(c); 
      dataGridView1.Rows.Add(); 
      dataGridView1.Rows[0].Cells[0].Value = "search"; 
     } 

     private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) 
     { 
      switch (dataGridView1[e.ColumnIndex,e.RowIndex].Value.ToString()) 
      { 
       case ("search"): 
        Process.Start("http://www.google.com"); 
        break; 
      } 
     } 

またはこの方法では、大規模なスイッチケースを避けるために:

 class customcolumn : System.Windows.Forms.DataGridViewLinkColumn 
     { 
      public Dictionary<int, string> urls = new Dictionary<int, string>(); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      int row_index = 0; 
      int column_index = 0; 

      customcolumn c = new customcolumn(); 
      dataGridView1.Columns.Add(c); 
      dataGridView1.Rows.Add(); 

      //Add Link-name here: 
      dataGridView1.Rows[row_index].Cells[column_index].Value = "search"; 
      //Add Link here: 
      ((customcolumn)(dataGridView1.Columns[column_index])).urls.Add(row_index, "http://www.google.com"); 
     } 

     private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) 
     { 
      foreach (KeyValuePair<int, string> url in ((customcolumn)(dataGridView1.Columns[e.ColumnIndex])).urls) 
      { 
       if (url.Key == e.RowIndex) 
       { 
        Process.Start(url.Value); 
        break; 
       } 
      } 
     } 
+0

私はあなたがカスタムクラスを実装しているという事実が好きセル(列)にDataGridViewのリンクボタンを追加してみました非常に簡単な方法。きれいで簡潔なコードを作る:) – dustinrwh