Можно ли показать границу выбора, а не фоновый цвет в DataGridView? - PullRequest
3 голосов
/ 15 июня 2009

В моем DGV задан ряд цветов BackColors на основе бизнес-логики. Когда пользователь выбирает строку, цвет меняется на выбранную строку BackColor, тем самым скрывая заданный цвет. Я хотел бы сохранить исходный цвет при выделении строки и указать выделение (возможно) жирной рамкой вокруг выделенной строки. Это возможно? Есть ли простая альтернатива, которую я упускаю?

EDIT Чтобы было понятно, это приложение WinForms.

Ответы [ 3 ]

6 голосов
/ 15 июня 2009

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

Итак, когда вы добавляете строку, скажем, с желтым фоном

Dim backColor as Color = Color.Yellow
row.DefaultCellStyle.BackColor = backColor
row.DefaultCellStyle.SelectionBackColor = Color.FromArgb(backColor.R * 3 / 4, backColor.G * 3 / 4, backColor.B * 3 / 4)

Умножение каждого цветового компонента на одно и то же число <1 служит для затемнения цвета, здесь вы можете поиграть с разными значениями, чтобы увидеть, что вам нравится больше всего эстетически. </p>

3 голосов
/ 15 июня 2009

Чтобы изменить поведение DataGridView по умолчанию, вам, как правило, необходимо получить дочерний класс на основе класса DataGridView. Я должен был сделать это, когда я хотел изменить поведение по умолчанию ячеек таблицы DataGridView, поскольку ввод идет, т.е. нажимая стрелки вверх и вниз, введите клавишу, такого рода вещи.

То, что вы спрашиваете, похоже на создание пользовательского столбца, я полагаю, вы должны выполнить те же шаги. Однако я не уверен, как вы можете изменить цвет фона.

Я бы предложил вам начать там. На самом деле, когда вы хотите сделать с сетью данных больше, чем планировала Microsoft, я обнаружил, что вам нужно это сделать.

Я хотел бы включить несколько ссылок:

MSDN при создании пользовательских столбцов для DataGridView

Блог о создании пользовательского поведения ввода для DataGridView

Я знаю, что это может занять некоторое время, и вы, вероятно, надеялись на быстрое решение, но изучение вышеперечисленного может помочь вам и в других проектах.

Возможно, я ошибаюсь, может быть, проще сделать то, что вы говорите.

Также попробуйте поискать «пользовательское поведение datagridview».

Я полагаю, вы говорите о приложении Windows Form, а не о веб-приложении, правильно?

0 голосов
/ 15 июня 2009

Вы можете использовать

<SelectedRowStyle CssClass="MyCssClass" />

, где вы бы создали класс CSS для определения строки таблицы с требуемым стилем границы. Или вы можете использовать встроенный стиль рамки с

<SelectedRowStyle BorderStyle="Solid" BorderWidth="1" BorderColor="Black" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...