// 清除一个DcElement对象对应的Control public void ClearOneElementControls( TableLayoutPanel table, DcElement line) { // color Label label = line.label_color; table.Controls.Remove(label); // element ComboBox element_combo = line.comboBox_element; table.Controls.Remove(element_combo); // scheme ComboBox scheme = line.comboBox_scheme; table.Controls.Remove(scheme); // language ComboBox language = line.comboBox_language; table.Controls.Remove(language); // text TextBox text = line.textBox_value; table.Controls.Remove(text); }
public int SetXml(string strXml, out string strError) { strError = ""; // clear lines原有内容 this.Clear(); this.DataDom = null; this.DataRoot = null; this.DcNodes = null; this.LastClickElement = null; this.XmlNamespaceManager = null; if (String.IsNullOrEmpty(strXml) == true) return 0; this.DataDom = new XmlDocument(); try { this.DataDom.LoadXml(strXml); } catch (Exception ex) { strError = "XML数据装入DOM时发生错误: " + ex.Message; return -1; } return this.SetXml(this.DataDom, out strError); }
public void ToggleSelectElement(DcElement element) { // 选中当前行 if ((element.State & ElementState.Selected) == 0) element.State |= ElementState.Selected; else element.State -= ElementState.Selected; this.LastClickElement = element; this.OnSelectedIndexChanged(); }
public void RangeSelectElement(DcElement element) { bool bSelectedChanged = false; DcElement start = this.LastClickElement; int nStart = this.Elements.IndexOf(start); if (nStart == -1) return; int nEnd = this.Elements.IndexOf(element); if (nStart > nEnd) { // 交换 int nTemp = nStart; nStart = nEnd; nEnd = nTemp; } for (int i = nStart; i <= nEnd; i++) { DcElement cur_element = this.Elements[i]; if ((cur_element.State & ElementState.Selected) == 0) { cur_element.State |= ElementState.Selected; bSelectedChanged = true; } } // 清除其余位置 for (int i = 0; i < nStart; i++) { DcElement cur_element = this.Elements[i]; if ((cur_element.State & ElementState.Selected) != 0) { cur_element.State -= ElementState.Selected; bSelectedChanged = true; } } for (int i = nEnd + 1; i < this.Elements.Count; i++) { DcElement cur_element = this.Elements[i]; if ((cur_element.State & ElementState.Selected) != 0) { cur_element.State -= ElementState.Selected; bSelectedChanged = true; } } if (bSelectedChanged == true) this.OnSelectedIndexChanged(); }
public void SelectElement(DcElement element, bool bClearOld) { bool bSelectedChanged = false; if (bClearOld == true) { for (int i = 0; i < this.Elements.Count; i++) { DcElement cur_element = this.Elements[i]; if (cur_element == element) continue; // 暂时不处理当前行 if ((cur_element.State & ElementState.Selected) != 0) { cur_element.State -= ElementState.Selected; bSelectedChanged = true; } } } // 选中当前行 if ((element.State & ElementState.Selected) == 0) { element.State |= ElementState.Selected; bSelectedChanged = true; } this.LastClickElement = element; if (bClearOld == true) { // 看看focus是不是已经在这一行上? // 如果不在,则要切换过来 if (element.IsSubControlFocused() == false) element.comboBox_element.Focus(); } if (bSelectedChanged == true) OnSelectedIndexChanged(); }
public void RemoveElement(DcElement line) { int index = this.Elements.IndexOf(line); if (index == -1) return; line.RemoveFromTable(this.tableLayoutPanel_main, index); this.Elements.Remove(line); if (this.LastClickElement == line) this.LastClickElement = null; this.Changed = true; }
public void RemoveElement(int index) { DcElement line = this.Elements[index]; line.RemoveFromTable(this.tableLayoutPanel_main, index); this.Elements.Remove(line); if (this.LastClickElement == line) this.LastClickElement = null; this.Changed = true; }
public DcElement InsertNewElement(int index) { this.DisableUpdate(); // 防止闪动。彻底解决问题。2009/10/13 try { this.tableLayoutPanel_main.RowCount += 1; this.tableLayoutPanel_main.RowStyles.Insert(index + 1, new System.Windows.Forms.RowStyle()); DcElement line = new DcElement(this); line.InsertToTable(this.tableLayoutPanel_main, index); this.Elements.Insert(index, line); line.State = ElementState.New; return line; } finally { this.EnableUpdate(); } }
public DcElement AppendNewElement() { this.DisableUpdate(); // 防止闪动。彻底解决问题。2009/10/13 try { // int nLastRow = this.tableLayoutPanel_main.RowCount; this.tableLayoutPanel_main.RowCount += 1; this.tableLayoutPanel_main.RowStyles.Add(new System.Windows.Forms.RowStyle()); DcElement line = new DcElement(this); line.AddToTable(this.tableLayoutPanel_main, this.Elements.Count + 1); this.Elements.Add(line); return line; } finally { this.EnableUpdate(); } }