Как установить пограничный стиль столбца таблицы данных во время выполнения (.Net Framework 4.0)? - PullRequest
0 голосов
/ 08 декабря 2011

У меня есть доступное только для чтения представление данных, которое связано с источником данных. У него есть две колонки. Теперь я хочу, чтобы у первого столбца не было стиля рамки ячейки; и второй должен иметь «Все» (т. е. все стороны ячейки должны иметь границу) в качестве границы ячейки. Прежде чем связать представление данных с источником данных, я пишу что-то вроде упомянутого ниже, но это не дает никакого эффекта Предположим, что рассматриваемый столбец называется DisplayName.

Dim newStyle As New DataGridViewAdvancedBorderStyle()
With newStyle
.Top = DataGridViewAdvancedCellBorderStyle.Single
.Left = DataGridViewAdvancedCellBorderStyle.Single
.Bottom = DataGridViewAdvancedCellBorderStyle.Single
.Right = DataGridViewAdvancedCellBorderStyle.Single
End With

DisplayName.CellTemplate.AdjustCellBorderStyle(newStyle, newStyle, True, True, True, True)

Пожалуйста, исправьте или предложите лучший способ. Привет.

Ответы [ 2 ]

1 голос
/ 13 декабря 2011
Private Sub dgvLegends_CellPainting(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellPaintingEventArgs) Handles dgvLegends.CellPainting
    'Draw custom cell borders.
    'If current column is DisplayName...
    If dgvLegends.Columns("DisplayName").Index = e.ColumnIndex AndAlso e.RowIndex >= 0 Then
            Dim Brush As New SolidBrush(dgvLegends.ColumnHeadersDefaultCellStyle.BackColor)
            e.Graphics.FillRectangle(Brush, e.CellBounds)
            Brush.Dispose()
            e.Paint(e.CellBounds, DataGridViewPaintParts.All And Not DataGridViewPaintParts.ContentBackground)

            ControlPaint.DrawBorder(e.Graphics, e.CellBounds, dgvLegends.GridColor, 1, ButtonBorderStyle.Solid, dgvLegends.GridColor, 1, ButtonBorderStyle.Solid, dgvLegends.GridColor, 1, ButtonBorderStyle.Solid, dgvLegends.GridColor, 1, ButtonBorderStyle.Solid)

        e.Handled = True
    End If
End Sub
0 голосов
/ 13 декабря 2011

попробуйте css?

    .style1 
    {
        border:none;
        width: 100%;
    }
    .style1 td+td
    {
        border:1px solid red;
    }

 <table cellpadding="2" class="style1">
    <tr>
        <td>a
            &nbsp;</td>
        <td>d
            &nbsp;</td>
    </tr>
    <tr>
        <td>b
            &nbsp;</td>
        <td>c
            &nbsp;</td>
    </tr>
</table>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...