Как сделать текст строки datagridview выделенным жирным шрифтом при выборе строки?

#c# #winforms

#c# #winforms

Вопрос:

Как мне сделать текст строки datagridview выделенным жирным шрифтом при выборе строки?

Ответ №1:

Обработайте событие форматирования ячейки DataGridView и примените полужирный стиль к шрифту, если ячейка принадлежит выбранной строке:

 private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
  var dataGridView = sender as DataGridView;
  if (dataGridView.Rows[e.RowIndex].Selected)
  {
    e.CellStyle.Font = new Font(e.CellStyle.Font, FontStyle.Bold);
    // edit: to change the background color:
    e.CellStyle.SelectionBackColor = Color.Coral;
  }
}
  

Комментарии:

1. спасибо за помощь !. и как изменить задний цвет строки?

2. Можно ли выделить жирным шрифтом только некоторые слова в ячейке, а не всю ячейку? Мне нужна эта функциональность для отображения основных моментов, но я не знаю, как это реализовать? Возможно ли это вообще?

3. @FrenkyB: Смотрите Статью Ячейка RichTextBox в DataGridView в Code Project, но, похоже, есть проблемы с производительностью… Может быть, если ваши данные доступны только для чтения, это может быть приемлемо.

4. Я получил ошибку нулевой ссылки, когда сетка была пустой, поэтому я использовал row.Cells[1].Style.Font = new Font( blahblahDataGridView.RowTemplate.DefaultCellStyle.Font, FontStyle.Bold); — но мне также пришлось установить шрифт по умолчанию для DataGridView.

Ответ №2:

После загрузки содержимого в Datagrid примените эти обработчики событий к RowEnter и RowLeave.

 private void dg_RowEnter(object sender, DataGridViewCellEventArgs e)
{
    System.Windows.Forms.DataGridViewCellStyle boldStyle = new System.Windows.Forms.DataGridViewCellStyle();
    boldStyle.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold);
    dg.Rows[e.RowIndex].DefaultCellStyle = boldStyle;
}

private void dg_RowLeave(object sender, DataGridViewCellEventArgs e)
{
    System.Windows.Forms.DataGridViewCellStyle norStyle = new System.Windows.Forms.DataGridViewCellStyle();
    norStyle.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular);
    dg.Rows[e.RowIndex].DefaultCellStyle = norStyle;
}
  

Коды не тестируются. Но это должно работать нормально.

Надеюсь, это поможет.

Ответ №3:

Попробуйте обработать SelectionChanged событие DataGridView и задать cell стиль.

Ответ №4:

Приведенный ниже код сделает шрифт жирным шрифтом для выбранной строки. «Итого» — это последняя проверка строки в моем коде

 protected void gvRow_RowDataBound(object sender, GridViewRowEventArgs e)
{
 if (e.Row.RowType == DataControlRowType.DataRow)
 {
  if (e.Row.Cells[rowIndex].Text == "Total") 
  {
   e.Row.Font.Bold = true;
  }
 }
}
  

Комментарии:

1. Речь идет о компоненте DataGridView, ваш — это что-то другое.

2. хорошо, мой ответ основан на GridView! что мне теперь делать .. должен ли я удалить свой ответ?