public override void ReadXml(XmlReader reader) { TypeConverter colorConverter = TypeDescriptor.GetConverter(typeof(Color)); base.ReadXml(reader); KnobImage = reader.ReadElementString("KnobImage"); if (!reader.IsEmptyElement) { Positions.Clear(); reader.ReadStartElement("Positions"); int i = 1; while (reader.NodeType != XmlNodeType.EndElement) { Positions.Add(new RotarySwitchPosition(this, i++, reader.GetAttribute("Name"), Double.Parse(reader.GetAttribute("Rotation"), CultureInfo.InvariantCulture))); reader.Read(); } reader.ReadEndElement(); } else { reader.Read(); } DefaultPosition = int.Parse(reader.ReadElementString("DefaultPosition"), CultureInfo.InvariantCulture); if (reader.Name.Equals("Lines")) { DrawLines = true; reader.ReadStartElement("Lines"); LineThickness = double.Parse(reader.ReadElementString("Thickness"), CultureInfo.InvariantCulture); LineLength = double.Parse(reader.ReadElementString("Length"), CultureInfo.InvariantCulture); LineColor = (Color)colorConverter.ConvertFromInvariantString(reader.ReadElementString("Color")); reader.ReadEndElement(); } else { DrawLines = false; } if (reader.Name.Equals("Labels")) { DrawLabels = true; reader.ReadStartElement("Labels"); LabelColor = (Color)colorConverter.ConvertFromInvariantString(reader.ReadElementString("Color")); MaxLabelWidth = double.Parse(reader.ReadElementString("MaxWidth"), CultureInfo.InvariantCulture); MaxLabelHeight = double.Parse(reader.ReadElementString("MaxHeight"), CultureInfo.InvariantCulture); LabelDistance = double.Parse(reader.ReadElementString("Distance"), CultureInfo.InvariantCulture); LabelFormat.ReadXml(reader); reader.ReadEndElement(); } else { DrawLabels = false; } if (reader.Name.Equals("ClickType")) { reader.ReadStartElement("ClickType"); ClickType = (ClickType)Enum.Parse(typeof(ClickType), reader.ReadElementString("Type")); if (ClickType == Controls.ClickType.Swipe) { SwipeSensitivity = double.Parse(reader.ReadElementString("Sensitivity"), CultureInfo.InvariantCulture); } reader.ReadEndElement(); } else { ClickType = Controls.ClickType.Swipe; SwipeSensitivity = 0d; } try { bool mw; bool.TryParse(reader.ReadElementString("MouseWheel"), out mw); MouseWheelAction = mw; } catch { MouseWheelAction = true; } BeginTriggerBypass(true); CurrentPosition = DefaultPosition; EndTriggerBypass(true); }