/// <summary> /// Subentries are updated. Returns true, if at least one entry is added or removed. /// </summary> public bool IterateElements() { string newNodeHash = ParameterDict.Current.GetHashOfName(_category); string newNodeValueHash = ParameterDict.Current.GetHash(_category); if (newNodeHash != _nodeHash) { // At least one entry is added or deleted, so everything must new created Create(_category); return(true); } if (newNodeValueHash != _nodeValueHash) { // At least one value has changed, so each subcontrol has to update itself foreach (UserControl subControl in Controls) { if (subControl is DataViewElement) { DataViewElement dataView = (DataViewElement)subControl; dataView.UpdateElements(); } } _nodeValueHash = ParameterDict.Current.GetHash(_category); return(false); } // If nothing has changed, nothing has to update. return(false); }
public void UpdateElements() { foreach (UserControl subControl in Controls) { if (subControl is DataViewElement) { DataViewElement dataView = (DataViewElement)subControl; dataView.UpdateElements(); } } }
/// <summary> /// Control ist filled with all entries which corresponds to given names. /// </summary> public void Create(string[] entryNames) { this.Dock = DockStyle.Fill; // Contain the edit entries before adding to the control List <DataViewElement> oldElements = new List <DataViewElement>(); this.SuspendLayout(); foreach (string parameterName in entryNames) { DataViewElement dElement = DataViewElementFactory.Create(parameterName, ParameterDict.Current.SortedEntries[parameterName], ParameterDict.Current.GetDatatype(parameterName), ParameterDict.Current.GetDescription(parameterName), true); dElement.ElementChanged += new ElementChangedDelegate(_parent.dElement_ElementChanged); oldElements.Add(dElement); dElement.TabIndex = oldElements.Count; _computedHeight += DataViewElementFactory.DefaultHeight; } for (int i = oldElements.Count - 1; i >= 0; i--) { DataViewElement dElement = oldElements[i]; Controls.Add(dElement); } this.ResumeLayout(true); }
/// <summary> /// Control ist filled with all entries which corresponds to the given category. /// </summary> public void Create(string category) { this.Dock = DockStyle.Fill; _category = category; _nodeHash = ParameterDict.Current.GetHashOfName(category); _nodeValueHash = ParameterDict.Current.GetHash(category); // Contain the edit entries before adding to the control List <DataViewElement> oldElements = new List <DataViewElement>(); this.SuspendLayout(); _computedHeight = 0; bool elementAdded = false; { DataViewElement helement = DataViewElementFactory.Create(category.Replace(".", " "), "", "Headline", "", false); oldElements.Add(helement); _computedHeight += DataViewElementFactory.DefaultHeight; } foreach (KeyValuePair <string, string> entry in ParameterDict.Current.SortedEntries) { string parameterName = entry.Key; if (parameterName.StartsWith(category + ".") && ParameterDict.HasControl(parameterName)) { if (parameterName.Length > category.Length) { string tempName = parameterName.Substring(category.Length + 1); if (!tempName.Contains(".")) { DataViewElement dElement = DataViewElementFactory.Create(parameterName, entry.Value, ParameterDict.Current.GetDatatype(parameterName), ParameterDict.Current.GetDescription(parameterName), true); dElement.ElementChanged += new ElementChangedDelegate(_parent.dElement_ElementChanged); oldElements.Add(dElement); dElement.TabIndex = oldElements.Count; _computedHeight += DataViewElementFactory.DefaultHeight; elementAdded = true; } } } } // Wenn kein direktes Unterelement existiert, werden alle Unterelemente eingefügt. string currentCategory = ""; string oldCategory = ""; if (!elementAdded) { // Header: foreach (KeyValuePair <string, string> entry in ParameterDict.Current.SortedEntries) { string parameterName = entry.Key; if (parameterName.StartsWith(category) && ParameterDict.HasControl(parameterName) && !ParameterDict.IsAdditionalInfo(parameterName)) { string[] paraSplit = parameterName.Split('.'); if (paraSplit.Length > 1) { currentCategory = paraSplit[paraSplit.Length - 2]; if (currentCategory != oldCategory) { /* * //DataViewElement helement = DataViewElementFactory.Create(currentCategory, "", "Headline", "", false); * DataViewElement helement = DataViewElementFactory.Create("", "", "Headline", "", false); * oldElements.Add(helement); */ oldCategory = currentCategory; _computedHeight += DataViewElementFactory.DefaultHeight; } } DataViewElement dElement = DataViewElementFactory.Create(parameterName, entry.Value, ParameterDict.Current.GetDatatype(parameterName), ParameterDict.Current.GetDescription(parameterName), true); dElement.ElementChanged += new ElementChangedDelegate(_parent.dElement_ElementChanged); oldElements.Add(dElement); dElement.TabIndex = oldElements.Count; _computedHeight += DataViewElementFactory.DefaultHeight; } } } for (int i = oldElements.Count - 1; i >= 0; i--) { DataViewElement dElement = oldElements[i]; Controls.Add(dElement); } this.ResumeLayout(true); }