public static bool MustRemoveLine(Dictionary <string, C1TrueDBGrid> grids, string line)
        {
            GroupCollection groups = RegularExpressions.ComplexProperty.Matches(line)[0].Groups;
            C1TrueDBGrid    grid   = grids[groups[1].Value];
            int             index  = -1;

            if (groups[4].Value != "")
            {
                index = int.Parse(groups[4].Value);
            }
            string subLine  = groups[5].Value;
            string property = groups[2].Value;

            switch (property.ToUpper())
            {
            case nameof(GridProperties.BACKCOLOR):
                grid.TimesReadBackColor--;
                return(grid.TimesReadBackColor > 0 || grid.Properties[property].Equals(Constants.GridAbsentPropertyValues[property]));

            case nameof(StyleProperties.FONT):
            case nameof(GridProperties.GROUPBYCAPTION):
            case nameof(GridProperties.LOCATION):
            case nameof(GridProperties.SIZE):
            case nameof(GridProperties.TABINDEX):
                return(false);

            case nameof(GridProperties.NAME):
                grid.TimesReadName--;
                return(grid.TimesReadName > 0);

            case nameof(GridProperties.PREVIEWINFO):
                return(PreviewInfoPropertyReader.MustRemoveLine(grid.PreviewInfo, subLine));

            case nameof(GridProperties.PRINTINFO):
                return(PrintInfoPropertyReader.MustRemoveLine(grid.PrintInfo, subLine));

            case nameof(GridProperties.ROWDIVIDER):
                return(GridLinesPropertyReader.MustRemoveLine(grid.RowDivider, subLine));

            case nameof(GridProperties.STYLES):
            case nameof(GridProperties.COL):
            case nameof(GridProperties.DATACHANGED):
            case nameof(GridProperties.EDITACTIVE):
            case nameof(GridProperties.LEFTCOL):
            case nameof(GridProperties.PROPBAG):
            case nameof(GridProperties.ROW):
            case nameof(GridProperties.SELECTEDTEXT):
            case nameof(GridProperties.SELECTIONLENGTH):
            case nameof(GridProperties.SELECTIONSTART):
                return(true);

            default:
                if (grid.Properties.ContainsKey(property))
                {
                    if (Constants.GridAbsentPropertyValues.ContainsKey(property))
                    {
                        return(grid.Properties[property].Equals(Constants.GridAbsentPropertyValues[property]));
                    }
                    else
                    {
                        return(false);
                    }
                }
                else if (grid.Splits[0].Properties.ContainsKey(property))
                {
                    if (Constants.SplitDesignerAbsentPropertyValues.ContainsKey(property))
                    {
                        return(grid.Splits[0].Properties[property].Equals(Constants.SplitDesignerAbsentPropertyValues[property]));
                    }
                    else
                    {
                        return(false);
                    }
                }
                else
                {
                    return(groups[14].Value != "+");
                }
            }
        }