【问题标题】:<DevExpress.Spreadsheet>The more columns and rows, the slower the line is drawn<DevExpress.Spreadsheet>列和行越多,画线越慢
【发布时间】:2019-05-14 08:30:30
【问题描述】:

作为参数接收并绘制一条到该尺寸的线。

列和行越多,线条绘制的越慢。 有什么办法可以改善吗?

 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;
        }

【问题讨论】:

  • 您在 devexpress 上为此买过票吗?我想他们可以为您提供最好的帮助
  • 你在另一台机器上试过了吗?只是在您的机器上运行缓慢?
  • “更多的列和行”是多少?

标签: c# winforms devexpress


【解决方案1】:

在设置边框之前使用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

【讨论】:

    【解决方案2】:

    要更改单元格区域的边框,请为此区域调用Range.BeginUpdateFormatting 方法,并使用返回的Formatting 对象的Borders 属性访问和修改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);
    }
    

    详情请参阅How to: Add and Remove Cell Borders

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-05
      • 1970-01-01
      • 1970-01-01
      • 2021-12-11
      • 1970-01-01
      • 2013-04-23
      • 2012-07-25
      • 2020-01-23
      相关资源
      最近更新 更多