2017-02-16 65 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

this.dataGridView1.EnableHeadersVisualStyles = false; 

未顯示:還要考慮着色頭小區Row[0]當一切都被初始化。

+0

這看起來很有前途。沒有時間測試,但我會接受它!感謝幫助! – CoderBrien

+0

你在初始化時做了什麼特別的事嗎?出於某種原因,我的網格最初會顯示所有選中的行標題,然後根據需要進行操作。我認爲發生的事情是網格在初始顯示期間在內部選擇第一個單元格,但我不確定所有的行首是如何在開始時選中的。 – CoderBrien

+0

我得到它的工作,但我不得不防止執行邏輯作爲'OnBindingContextChanged'事件的結果。而且,它很甜蜜! – CoderBrien

相關問題