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 != "+"); } } }