private void AddRefreshElements(DomElement startElement, DomElement endElement) { DomContentElement ce = myContainer.ContentElement; DomElementList res = this.OwnerList.RefreshElements; if (res.Contains(startElement) == false) { res.Add(startElement); } DomContentLine startLine = null; while (startElement != null) { // 可能存在元素不显示在文档中,例如处于图形模式下的XTextShapeInputFieldElement中, // 内容就不显示,在此向上查询显示出来的内容。 if (ce.PrivateContent.Contains(startElement)) { startLine = startElement.OwnerLine; if (res.Contains(startElement) == false) { res.Add(startElement); } break; } startElement = startElement.Parent; }//while if (res.Contains(endElement) == false) { res.Add(endElement); } DomContentLine endLine = null; while (endElement != null) { if (ce.PrivateContent.Contains(endElement)) { endLine = endElement.OwnerLine; if (res.Contains(endElement) == false) { res.Add(endElement); } break; } endElement = endElement.Parent; }//while ce.SetLinesInvalidateState( startLine, endLine); }
/// <summary> /// Handle selection changed event in editor control /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void myEditControl_SelectionChanged(object sender, EventArgs e) { DomContentLine line = myEditControl.Document.CurrentContentElement.CurrentLine; if (line != null && line.OwnerPage != null) { string txt = string.Format("Page:{0} Line:{1} Column:{2}", Convert.ToString(line.OwnerPage.PageIndex), Convert.ToString(myEditControl.CurrentLineIndexInPage), Convert.ToString(myEditControl.CurrentColumnIndex)); if (myEditControl.Selection.Length != 0) { txt = txt + string.Format( " Selected{0}elements", Math.Abs(myEditControl.Selection.Length)); } this.lblPosition.Text = txt; } UpdateFormText(); }