public void RangeSelectElement(FromElement element) { bool bSelectedChanged = false; FromElement 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++) { FromElement 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++) { FromElement 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++) { FromElement 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(FromElement element, bool bClearOld) { bool bSelectedChanged = false; if (bClearOld == true) { for (int i = 0; i < this.Elements.Count; i++) { FromElement 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.textBox_style.Focus(); } if (bSelectedChanged == true) OnSelectedIndexChanged(); }
public void ToggleSelectElement(FromElement element) { // 选中当前行 if ((element.State & ElementState.Selected) == 0) element.State |= ElementState.Selected; else element.State -= ElementState.Selected; this.LastClickElement = element; this.OnSelectedIndexChanged(); }
// 清除一个FromElement对象对应的Control public void ClearOneElementControls( TableLayoutPanel table, FromElement line) { // color Label label = line.label_color; table.Controls.Remove(label); // style TextBox style = line.textBox_style; table.Controls.Remove(style); // captions CaptionEditControl captions = line.captions; table.Controls.Remove(captions); }
public void ClearAllSelect() { bool bSelectedChanged = false; for (int i = 0; i < this.Elements.Count; i++) { FromElement cur_element = this.Elements[i]; if ((cur_element.State & ElementState.Selected) != 0) { cur_element.State -= ElementState.Selected; bSelectedChanged = true; } } this.LastClickElement = null; if (bSelectedChanged == true) this.OnSelectedIndexChanged(); }
public void RemoveElement(FromElement 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) { FromElement 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 FromElement InsertNewElement(int index) { this.tableLayoutPanel_main.RowCount += 1; this.tableLayoutPanel_main.RowStyles.Insert(index + 1, new System.Windows.Forms.RowStyle()); FromElement line = new FromElement(this); line.InsertToTable(this.tableLayoutPanel_main, index); this.Elements.Insert(index, line); line.State = ElementState.New; SelectElement(line, true); // 2008/6/10 return line; }
public FromElement AppendNewElement() { this.tableLayoutPanel_main.RowCount += 1; this.tableLayoutPanel_main.RowStyles.Add(new System.Windows.Forms.RowStyle()); FromElement line = new FromElement(this); line.AddToTable(this.tableLayoutPanel_main, this.Elements.Count + 1); this.Elements.Add(line); return line; }
int SetXml(string strXml, out string strError) { strError = ""; // clear lines原有内容 this.Clear(); this.LastClickElement = null; if (String.IsNullOrEmpty(strXml) == true) return 0; XmlDocument dom = new XmlDocument(); dom.LoadXml("<root />"); XmlDocumentFragment fragment = dom.CreateDocumentFragment(); try { fragment.InnerXml = strXml; } catch (Exception ex) { strError = "fragment XML装入XmlDocumentFragment时出错: " + ex.Message; return -1; } dom.DocumentElement.AppendChild(fragment); XmlNodeList nodes = dom.DocumentElement.SelectNodes("from"); this.DisableUpdate(); try { for (int i = 0; i < nodes.Count; i++) { XmlNode node = nodes[i]; FromElement element = this.AppendNewElement(); element.Style = DomUtil.GetAttr(node, "style"); try { element.CaptionsXml = node.InnerXml; } catch (Exception ex) { strError = "set element CaptionXml error: " + ex.Message; return -1; } } this.SetElementsHeight(); } finally { this.EnableUpdate(); } return 0; }