public void InitFrom(ProfessionalColorTable colorTable, bool makeColorsDefault) { // Instead of "colors[ColorTableGroup.ButtonSelectedBorder] = colorTable.ButtonSelectedBorder"... // use reflection. var colorTableType = colorTable.GetType(); var colorTableGroupType = typeof(ColorTableGroup); foreach (ColorTableGroup colorTableGroup in Enum.GetValues(colorTableGroupType)) { var prop = colorTableType.GetProperty(Enum.GetName(colorTableGroupType, colorTableGroup)); _colors[colorTableGroup] = (Color)prop.GetValue(colorTable, null); } if (makeColorsDefault) { MakeColorsDefault(); } }
public void InitFromBase(bool makeColoursDefault) { // Instead of " colors[ColorTableGroup.ButtonSelectedBorder] = base.ButtonSelectedBorder"... // use reflection. Type colorTableType = professionalColourTable.GetType(); Type colorTableGroupType = typeof(ColourTableGroup); foreach (ColourTableGroup colorTableGroup in Enum.GetValues(colorTableGroupType)) { switch (colorTableGroup) { case ColourTableGroup.FormForeColour: case ColourTableGroup.FormBackColour: case ColourTableGroup.GridGridColour: case ColourTableGroup.GridBackColour: { var name = Enum.GetName(colorTableGroupType, colorTableGroup); try { var prop = colorTableType.GetProperty(name); colours[colorTableGroup] = (Color)prop.GetValue(professionalColourTable, null); } catch { colours[colorTableGroup] = Color.Black; } break; } default: { var prop = colorTableType.GetProperty(Enum.GetName(colorTableGroupType, colorTableGroup)); colours[colorTableGroup] = (Color)prop.GetValue(professionalColourTable, null); break; } } } if (makeColoursDefault) { MakeColorsDefault(); } }
/// <summary> /// Constructor that instantiates and sets up ProfessionalColorTable object</summary> public CustomColorTable() { var allPropInfos = GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly); var properyMap = new Dictionary <string, PropertyInfo>(); int count = "Settable".Length; foreach (var propInfo in allPropInfos) { if (propInfo.PropertyType != typeof(Color)) { continue; } if (propInfo.Name.StartsWith("Settable")) { string name = propInfo.Name.Remove(0, count); properyMap.Add(name, propInfo); } } ProfessionalColorTable colorTable = new ProfessionalColorTable(); PropertyInfo[] originals = colorTable.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly); foreach (var propInfo in originals) { PropertyInfo settable; if (properyMap.TryGetValue(propInfo.Name, out settable)) { settable.SetValue(this, propInfo.GetValue(colorTable, null), null); } } SettableToolStripBorder = Color.Transparent; SettableImageMarginGradientBegin = Color.Transparent; SettableImageMarginGradientMiddle = Color.Transparent; SettableImageMarginGradientEnd = Color.Transparent; }