2017-02-16 8 views
1

DataGridViewには、選択したセルを持つ行の行ヘッダーを強調表示します。それを行うには?選択したセルがある行の行ヘッダーを強調表示

(標準的な動作は、セルの行全体が選択されている場合にのみ行ヘッダーを強調表示するように見えます)。

私が試したもの:

私はDataGridViewのための逆コンパイルソースを見て、私はそれがDataGridViewRowが選択されているかどうかに基づいて、ヘッダを強調(間違いなく間違っている可能性がある)伝えることができるものからきました。実際に選択されていない行を選択する方法はわかりません

+0

何を試しましたか?関連するヘッダーを強調表示するCellClickまたはSelectionChangedイベントのイベントハンドラを見たことがありますか? – AgapwIesu

+0

質問が更新されました。 – CoderBrien

答えて

1

これまでに行ったことは、CellStateChangedイベントを処理し、影響を受けたセルの行のセルをチェックし、それに応じて行ヘッダー。

private void DataGridView1_CellStateChanged(object sender, DataGridViewCellStateChangedEventArgs e) 
{ 
    bool selected = false; 

    foreach (DataGridViewCell cell in e.Cell.OwningRow.Cells) 
    { 
     if (cell.Selected) 
     { 
      selected = true; 
      break; 
     } 
    } 

    e.Cell.OwningRow.HeaderCell.Style.BackColor = selected ? 
     this.dataGridView1.RowHeadersDefaultCellStyle.SelectionBackColor : 
     this.dataGridView1.RowHeadersDefaultCellStyle.BackColor; 
} 

explained hereとしてあなたは、これらの変更を有効にするには、次のsnippitを設定する必要があります:

this.dataGridView1.EnableHeadersVisualStyles = false; 

が示されていません。また、すべてが初期化されるときにRow[0]のヘッダーセルを着色することを検討してください。

+0

これは有望です。まだテストする時間はありませんが、私はそれを受け入れます!助けを感謝する! – CoderBrien

+0

初期化中に何か特別なことをしますか?何らかの理由でグリッドが最初に表示され、すべての行ヘッダーが選択され、その後、必要に応じて動作します。私は何が起こっていると思いますグリッドは最初の表示中に最初のセルを選択して内部的には、私はどのようにすべての行のヘッダーが最初に選択を巻くか分からないです。 – CoderBrien

+0

私はそれを動作させましたが、 'OnBindingContextChanged'イベントの結果としてロジックを実行しないようにしなければなりませんでした。そして、それは甘いです! – CoderBrien

関連する問題