2012-04-02 4 views
0

私は、c#winformプロジェクトのバインドされたdatagridviewカラムをhrefリンクのように表示する方法を理解しようとしています。リンククリックは機能しますが、平均的なユーザーは文字列として表示されているため、フィールドをクリックできることに気付かないでしょう。私はフィールドが青色で表示される必要があります。下線付きです。マウスポインタが手になります。datagridviewカラムhrefリンク付きデータテーブルを使用する

私はDatagridでデータセットを使用していたときこれを達成できました。私はデザイナーに行き、 "Add Column"を選択して、 "DataGridViewLinkColumn"として追加しました。私は最近、データテーブルを使用するようにプロジェクトを変更しました。 )。

比較的容易にこれを実現するためにどのように任意の理想的な?私が検索したと私は簡単な解決策を見つけるように見えることはできませんという、やや驚いている。

+0

は私たちにあなたがリンク列を定義するために使用するコードを示しています。誤って列の型をDataGridViewTextColumnに変更したのでしょうか?クリックもサポートしています。 – surfen

答えて

0

DataGridViewLinkColumn.LinkBehaviorプロパティを見てみましょう。 AlwaysUnderlineに設定することができます。

の色については、単にDataGridViewLinkColumn上* LinkColorプロパティを使用します。

これは役立つかもしれないの

乾杯

+0

ありがとうございました明日あなたの理想を私が列の並べ替えと順序に問題がある他の方法を試してみることがあります。手にポインタを変更することについての任意の考えですか?私はmouseover/mouseoutとcursor.somethingを使用することを考えている(申し訳ありませんが私の心をスリップする)。これはうまくいくかもしれません、私はあなたに知らせるでしょう。助けてくれてありがとう。 – Chris

1

 DataGridViewLinkColumn col1 = new DataGridViewLinkColumn(); 
     dataGridView1.Columns.Add(col1); 
     dataGridView1.Columns[0].Name = "Links"; 

     DataGridViewRow dgvr = new DataGridViewRow(); 
     dgvr.CreateCells(dataGridView1); 

     DataGridViewCell linkCell = new DataGridViewLinkCell(); 
     linkCell.Value = @"http:\\www.google.com"; 
     dgvr.Cells[0] = linkCell; 

     dataGridView1.Rows.Add(dgvr); 

それはCOL、その後型リンクのセルを作成します。 foreachループを使用すると、これをより整然としたやり方で、より多くのアイテムに対してより速く行うことができます。

Good Luck!

+0

なんらかの理由で私は空の新しい列で終わった。私はDataGridViewLinkColumnを検索しましたが、このようなことをすることができました: DataGridViewLinkColumn dgvlc = new DataGridViewLinkColumn(); dgvlc.DisplayIndex = 5; dgvlc.DataPropertyName = "DataboundColumn"; //正しいデータ列にバインドします dgvlc.HeaderText = "MyLink"; this.dgvReminderSettings.Columns.Add(dgvlc); – Chris

+0

私はもともとこれがデータバインドされたグリッドであると言いましたが、いくつかの検索を行い、これもあまりにもうまくいっています。私は上記のコードのこの部分を含んでいました。 私の新しい唯一の問題は、私の新しい列がグリッドの左端にあります(5番目ではなく1番目の列として)、列が他の列のように並べ替えることができないということです。私はdgvlc.DisplayIndex = 5を試しました。列を移動させ、いくつかの他のものを運行させるが運がない。 これらの小さくて重要な問題を解決する方法の理想はありますか?私は 'r.Cells [「リンク」]でハンドラをデータバインディングに鋳造コードを交換しなければならなかった以外 多くのおかげで、 〜クリス・ – Chris

0

datagridviewでその列の色を変更するだけで済みます。あなたはそのようなDataBindingCompleteイベントでこれを行うことができます:

private void dataGridView1_DataBindingComplete(object sender, 
    DataGridViewBindingCompleteEventArgs e) 
{ 
    if(this.mydatagridview.Columns["YourLinkColumnName"] != null) 
    {  
     this.mydatagridview.Columns["YourLinkColumnName"].DefaultCellStyle.Font = ... 
     this.mydatagridview.Columns["YourLinkColumnName"].DefaultCellStyle.ForeColor = ... 
    } 
} 

あなたはしかし、あなたは(すなわち下線、色、など。)それを好むようにフォントを設定することができます。

また、列が事前作成(自動生成列ではない)している場合は、デザイナのデフォルトのセルスタイルを変更できます。

2

変更するには、このようなDataGridViewLinkCellなり、その後、セルをクリックを処理するためにリンクされている細胞の種類:

void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e) 
{ 
    foreach (DataGridViewRow r in dataGridView1.Rows) 
    { 
     if (System.Uri.IsWellFormedUriString(r.Cells["Links"].Value.ToString(), UriKind.Absolute)) 
     { 
      r.Cells["Links"] = new DataGridViewLinkCell(); 
      DataGridViewLinkCell c = r.Cells["Links"] as DataGridViewLinkCell; 
     } 
    } 
} 

// And handle the click too 
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) 
{ 
    if (dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex] is DataGridViewLinkCell) 
    { 
     System.Diagnostics.Process.Start(dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value as string); 
    } 
} 
+0

これは、私のために働いた新しいDataGridViewLinkCell {値= r.Cells ["リンクを= "] .Value};' – hillstuk

関連する問題