На скриншотах: первая строка ListView, вторая строка DataGridView.
Когда нажимаешь на заголовок ListView, он выделяется и перестает. Когда ходишь по DataGridView выделение заголовка остается. И я имею ввиду не цвет, а то что происходит "утопление" ячейки выделенного столбца. Можно от этого уйти? Либо убрать выделение шапки, либо убрать "утопление" при активном выделении.
И я имею ввиду не цвет, а то что происходит "утопление" ячейки выделенного столбца.
Это не просто утопление, это сортировка строк таблицы по заданному столбцу. Посмотрите на треугольник сбоку. Если щелкните еще раз, то порядок сортировки изменится и треугольник перевернется.
Можно от этого уйти? Либо убрать выделение шапки, либо убрать "утопление" при активном выделении.
Можно сделать столбец несортируемым, для этого нужно для столбца DataGridView
установить свойству SortMode
значение NotSortable
.
Вот пример кода:
using System;
using System.Drawing;
using System.Windows.Forms;
class Program
{
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
var grid = new DataGridView { Dock = DockStyle.Fill } ;
grid.Columns.Add(new DataGridViewTextBoxColumn
{
HeaderText = "Сортируемый"
});
grid.Columns.Add(new DataGridViewTextBoxColumn
{
HeaderText = "Несортируемый",
SortMode = DataGridViewColumnSortMode.NotSortable
});
grid.Rows.Add(new[] { "Раз", "Два" });
grid.Rows.Add(new[] { "Три", "Четыре" });
grid.Rows.Add(new[] { "Пять", "Шесть" });
var form = new Form
{
ClientSize = new Size(300, 200)
};
form.Controls.Add(grid);
Application.Run(form);
}
}
А вот результат:
Если нужно, чтобы при наведении столбец выделялся, но при этом не сортировался, то можно установить SortMode = Programmatic
и при этом не обрабатывать событие SortCompare
.
Код:
grid.Columns.Add(new DataGridViewTextBoxColumn
{
HeaderText = "Несортируемый",
SortMode = DataGridViewColumnSortMode.Programmatic
});
Пример:
Если же нужно отключить вообще любое выделение в столбцах, то можно установить свойство DataGridView.EnableHeadersVisualStyles
в false
. Тогда сортировка сохранится, но столбцы выделяться не будут.
Если в примере выше изменить инициализацию таблицы на:
var grid = new DataGridView { Dock = DockStyle.Fill, EnableHeadersVisualStyles = false };
, то получится следующее:
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Всем привет, подскажите как вывести стринговое значение (string) в labelText (C#, Visual Studio 2017, Windows Form Application);