2017-02-16 3 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; 
} 

Вам необходимо установить следующую Snippit, чтобы включить эти изменения, так как explained here:

this.dataGridView1.EnableHeadersVisualStyles = false; 

Не показан: также рассмотреть вопрос о раскраске ячейки заголовка для Row[0], когда все инициализируется.

+0

это выглядит многообещающим. еще не успели испытать, но я приму это! оцените помощь !!! – CoderBrien

+0

Вы делаете что-нибудь особенное во время инициализации? по какой-то причине моя сетка изначально отображается со всеми выбранными заголовками строк, а затем работает по желанию. Я думаю, что происходит то, что сетка внутренне выбирает первую ячейку во время начального отображения, хотя я не уверен, как все заголовки строк заканчиваются сначала. – CoderBrien

+0

Я получил его работу, но мне пришлось защищать от выполнения логики в результате события OnBindingContextChanged. И это мило! – CoderBrien

Смежные вопросы