Нарисуйте *тонкую* границу между ячейками в TableLayoutPanel.C#

Место общения программистов C#
Ответить
Anonymous
 Нарисуйте *тонкую* границу между ячейками в TableLayoutPanel.

Сообщение Anonymous »

Я хочу контролировать наличие линии границы между ячейками в TableLayoutPanel, так же, как я могу это сделать в таблице Excel.
Для начала я установил для параметра CellBorderStyle значение None, как предложено в разделе «Рисовать только внешнюю границу для ячеек TableLayoutPanel». Одна из проблем заключается в том, что клетки сближаются. Вы можете увидеть это, переключив CellBorderStyle в конструкторе VisualStudio. Итак, мне интересно, включает ли часть решения, которое мне нужно, оставить CellBorderStyle как Single, но затем закрасить линию границы, нарисованную системой, линией того же цвета, что и фон ячейки.
Помимо этого, я использовал все подходы, данные в ответах на предыдущий вопрос и в разделе «Нарисовать границы вокруг некоторых ячеек на панели tablelayout». То есть я попробовал e.Graphics.DrawLine(Pens.Black, topLeft, topRight), e.Graphics.DrawRectangle(new Pen(Color.Blue), e.CellBounds) и ControlPaint.DrawBorder(e.Graphics, прямоугольник, Color.Red, ButtonBorderStyle.Single). Все это привело к получению гораздо более толстой линии, чем рисует система. Вы можете увидеть это здесь:
Изображение

Кто-нибудь знает, что реализация TableLayoutPanel использует для рисования тонких линий границ? Судя по исходному коду TableLayoutPanel.cs, кажется, что он вызывает ControlPaint.PaintTableCellBorder(cellBorderStyle,graphics,bound), но это не открытый метод ControlPaint. Наконец-то мне удалось перейти к методу ControlPaint, который позволяет мне просмотреть исходный код PaintTableCellBorder. Он вызывает e.Graphics.DrawRectangle(SystemPens.ControlDark, e.CellBounds), что также приводит к слишком толстой линии при прямом вызове. Есть ли здесь какое-то волшебство, которого мне не хватает?

Подробнее здесь: https://stackoverflow.com/questions/798 ... ayoutpanel
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»