DataGridView выбранный стиль ячейки - PullRequest
4 голосов
/ 26 июня 2009

Как я могу изменить «стиль выделения» в DataGridView (winforms)?

Ответы [ 5 ]

5 голосов
/ 26 июня 2009

Вы можете легко изменить передний цвет и задний цвет выделенных ячеек, назначив значения для SelectedBackColor и SelectedForeColor элемента DefaultCellStyle сетки.

Если вам нужно выполнить дальнейшие стили, вам нужно обработать событие SelectionChanged

Редактировать: (В другом примере кода были ошибки, корректировка для нескольких выбранных ячеек [как в полной версии))

using System.Drawing.Font;

private void dataGridView_SelectionChanged(object sender, EventArgs e)
        {

            foreach(DataGridViewCell cell in ((DataGridView)sender).SelectedCells)
        {
            cell.Style = new DataGridViewCellStyle()
            {
                BackColor = Color.White,
                Font = new Font("Tahoma", 8F),
                ForeColor = SystemColors.WindowText,
                SelectionBackColor = Color.Red,
                SelectionForeColor = SystemColors.HighlightText
            };
        }
        }
1 голос
/ 26 июня 2009

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

    private void dataGridView1_SelectionChanged(object sender, EventArgs e)
    {
        foreach (DataGridViewRow row in this.dataGridView1.Rows)
        {
            foreach (DataGridViewCell c in row.Cells)
            {
                c.Style = this.dataGridView1.DefaultCellStyle;
            }
        }


        DataGridViewCellStyle style = new DataGridViewCellStyle();
        style.BackColor = Color.Red;
        style.Font = new Font("Courier New", 14.4f, FontStyle.Bold);
        foreach (DataGridViewCell cell in this.dataGridView1.SelectedCells)
        {
            cell.Style = style;
        } 
    }
1 голос
/ 26 июня 2009

Используйте свойство SelectedCells GridView и свойство Style DataGridViewCell.

0 голосов
/ 10 февраля 2014

При этом вы даже можете нарисовать цветную рамку для выбранных ячеек.

private void dataGridView_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
    if (e.RowIndex >= 0 && e.ColumnIndex >= 0)
    {
        if (dataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Selected == true)
        {
            e.Paint(e.CellBounds, DataGridViewPaintParts.All & ~DataGridViewPaintParts.Border);
            using (Pen p = new Pen(Color.Red, 1))
            {
                Rectangle rect = e.CellBounds;
                rect.Width -= 2;
                rect.Height -= 2;
                e.Graphics.DrawRectangle(p, rect);
            }
            e.Handled = true;
        }
    }
}
0 голосов
/ 22 июля 2013

Вы можете попробовать решение, приведенное в этой теме . Я проверил и одобрил это.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...