public void RangeSelectElement(CaptionElement element) { bool bSelectedChanged = false; CaptionElement 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++) { CaptionElement 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++) { CaptionElement 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++) { CaptionElement 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(CaptionElement element, bool bClearOld) { bool bSelectedChanged = false; if (bClearOld == true) { for (int i = 0; i < this.Elements.Count; i++) { CaptionElement 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_language.Focus(); } if (bSelectedChanged == true) OnSelectedIndexChanged(); }
public void ToggleSelectElement(CaptionElement element) { // 选中当前行 if ((element.State & ElementState.Selected) == 0) element.State |= ElementState.Selected; else element.State -= ElementState.Selected; this.LastClickElement = element; this.OnSelectedIndexChanged(); }
// 清除一个CaptionElement对象对应的Control public void ClearOneElementControls( TableLayoutPanel table, CaptionElement line) { // color Label label = line.label_color; table.Controls.Remove(label); // language ComboBox language = line.comboBox_language; table.Controls.Remove(language); // text TextBox text = line.textBox_value; table.Controls.Remove(text); }
public void RemoveElement(CaptionElement line) { int index = this.Elements.IndexOf(line); if (index == -1) return; line.RemoveFromTable(this.tableLayoutPanel_main, index); this.Elements.Remove(line); if (this.ElementCountChanged != null) this.ElementCountChanged(this, new EventArgs()); if (this.LastClickElement == line) this.LastClickElement = null; this.Changed = true; }
public CaptionElement InsertNewElement(int index) { this.tableLayoutPanel_main.RowCount += 1; this.tableLayoutPanel_main.RowStyles.Insert(index + 1, new System.Windows.Forms.RowStyle()); CaptionElement line = new CaptionElement(this); line.InsertToTable(this.tableLayoutPanel_main, index); this.Elements.Insert(index, line); if (this.ElementCountChanged != null) this.ElementCountChanged(this, new EventArgs()); line.State = ElementState.New; SelectElement(line, true); // 2008/6/10 return line; }
public CaptionElement AppendNewElement() { this.tableLayoutPanel_main.RowCount += 1; this.tableLayoutPanel_main.RowStyles.Add(new System.Windows.Forms.RowStyle()); CaptionElement line = new CaptionElement(this); line.AddToTable(this.tableLayoutPanel_main, this.Elements.Count + 1); this.Elements.Add(line); if (this.ElementCountChanged != null) this.ElementCountChanged(this, new EventArgs()); 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("caption"); this.DisableUpdate(); try { for (int i = 0; i < nodes.Count; i++) { XmlNode node = nodes[i]; CaptionElement element = this.AppendNewElement(); element.Language = DomUtil.GetAttr(node, "lang"); element.Value = node.InnerText; } this.Changed = false; } finally { this.EnableUpdate(); } return 0; }