Чем больше столбцов и строк, тем медленнее рисуется линия - PullRequest
2 голосов
/ 14 мая 2019

Получите в качестве параметра и нарисуйте линию с этим размером.

Чем больше столбцов и строк, тем медленнее рисуется линия.Есть ли способ улучшить его?

 private void Linestyle(DevExpress.Spreadsheet.Range rg1)
        {
        rg1.Borders.InsideHorizontalBorders.LineStyle = DevExpress.Spreadsheet.BorderLineStyle.Dotted;
        rg1.Borders.InsideVerticalBorders.LineStyle = DevExpress.Spreadsheet.BorderLineStyle.Dotted;
        rg1.Borders.TopBorder.LineStyle = DevExpress.Spreadsheet.BorderLineStyle.Thick;
        rg1.Borders.LeftBorder.LineStyle = DevExpress.Spreadsheet.BorderLineStyle.Thick;
        rg1.Borders.RightBorder.LineStyle = DevExpress.Spreadsheet.BorderLineStyle.Thick;
        rg1.Borders.BottomBorder.LineStyle = DevExpress.Spreadsheet.BorderLineStyle.Thick;
        rg1.Borders.InsideVerticalBorders.Color = Color.DarkOrange;
        rg1.Borders.InsideHorizontalBorders.Color = Color.DarkOrange;
        rg1.Borders.TopBorder.Color = Color.DarkOrange;
        rg1.Borders.LeftBorder.Color = Color.DarkOrange;
        rg1.Borders.RightBorder.Color = Color.DarkOrange;
        rg1.Borders.BottomBorder.Color = Color.DarkOrange;
        }

Ответы [ 2 ]

1 голос
/ 14 мая 2019

Используйте BeginUpdate() до и EndUpdate() после установки границ. Как это:

private void Linestyle(DevExpress.Spreadsheet.Range rg1)
{
    rg1.BeginUpdate();
    rg1.Borders.InsideHorizontalBorders.LineStyle = DevExpress.Spreadsheet.BorderLineStyle.Dotted;
    rg1.Borders.InsideVerticalBorders.LineStyle = DevExpress.Spreadsheet.BorderLineStyle.Dotted;
    rg1.Borders.TopBorder.LineStyle = DevExpress.Spreadsheet.BorderLineStyle.Thick;
    rg1.Borders.LeftBorder.LineStyle = DevExpress.Spreadsheet.BorderLineStyle.Thick;
    rg1.Borders.RightBorder.LineStyle = DevExpress.Spreadsheet.BorderLineStyle.Thick;
    rg1.Borders.BottomBorder.LineStyle = DevExpress.Spreadsheet.BorderLineStyle.Thick;
    rg1.Borders.InsideVerticalBorders.Color = Color.DarkOrange;
    rg1.Borders.InsideHorizontalBorders.Color = Color.DarkOrange;
    rg1.Borders.TopBorder.Color = Color.DarkOrange;
    rg1.Borders.LeftBorder.Color = Color.DarkOrange;
    rg1.Borders.RightBorder.Color = Color.DarkOrange;
    rg1.Borders.BottomBorder.Color = Color.DarkOrange;
    rg1.EndUpdate();
}

Производительность в диапазоне 10x10:

Without Begin/EndUpdate: ~5430ms
With Begin/EndUpdate: ~17ms
0 голосов
/ 14 мая 2019

Чтобы изменить границы диапазона ячеек, вызовите метод Range.BeginUpdateFormatting для этого диапазона и используйте свойство Borders возвращенного объекта Formatting для доступа и изменения коллекции Borders.Затем вызовите метод Range.EndUpdateFormatting , чтобы завершить изменение.

void SetupBorders(DevExpress.Spreadsheet.Range range) {
    Formatting rangeFormatting = range.BeginUpdateFormatting();
    Borders rangeBorders = rangeFormatting.Borders;
    rangeBorders.InsideHorizontalBorders.LineStyle = DevExpress.Spreadsheet.BorderLineStyle.Dotted;
    rangeBorders.InsideVerticalBorders.LineStyle = DevExpress.Spreadsheet.BorderLineStyle.Dotted;
    rangeBorders.TopBorder.LineStyle = DevExpress.Spreadsheet.BorderLineStyle.Thick;
    rangeBorders.LeftBorder.LineStyle = DevExpress.Spreadsheet.BorderLineStyle.Thick;
    rangeBorders.RightBorder.LineStyle = DevExpress.Spreadsheet.BorderLineStyle.Thick;
    rangeBorders.BottomBorder.LineStyle = DevExpress.Spreadsheet.BorderLineStyle.Thick;
    rangeBorders.InsideVerticalBorders.Color = Color.DarkOrange;
    rangeBorders.InsideHorizontalBorders.Color = Color.DarkOrange;
    rangeBorders.TopBorder.Color = Color.DarkOrange;
    rangeBorders.LeftBorder.Color = Color.DarkOrange;
    rangeBorders.RightBorder.Color = Color.DarkOrange;
    rangeBorders.BottomBorder.Color = Color.DarkOrange;
    range.EndUpdateFormatting(rangeFormatting);
}

См. Как: добавить и удалить границы ячеек для получения подробной информации.

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