当前位置: 首页>>代码示例>>C#>>正文


C# TextPointer.InsertTextInRun方法代码示例

本文整理汇总了C#中System.Windows.Documents.TextPointer.InsertTextInRun方法的典型用法代码示例。如果您正苦于以下问题:C# TextPointer.InsertTextInRun方法的具体用法?C# TextPointer.InsertTextInRun怎么用?C# TextPointer.InsertTextInRun使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在System.Windows.Documents.TextPointer的用法示例。


在下文中一共展示了TextPointer.InsertTextInRun方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: UpdateAccessKey

        /// <summary>
        /// UpdateAccessKey - Scans forward in the tree looking for the access key marker, replacing it with access key element. We only support one find.
        /// </summary>
        private void UpdateAccessKey()
        {
            TextPointer navigator = new TextPointer(TextContainer.Start);

            while (!_accessKeyLocated && navigator.CompareTo(TextContainer.End) < 0 )
            {
                TextPointerContext symbolType = navigator.GetPointerContext(LogicalDirection.Forward);
                switch (symbolType)
                {
                    case TextPointerContext.Text:
                        string text = navigator.GetTextInRun(LogicalDirection.Forward);
                        int index = FindAccessKeyMarker(text);
                        if(index != -1 && index < text.Length - 1)
                        {
                            string keyText = StringInfo.GetNextTextElement(text, index + 1);
                            TextPointer keyEnd = navigator.GetPositionAtOffset(index + 1 + keyText.Length);

                            _accessKey = new Run(keyText);
                            _accessKey.Style = AccessKeyStyle;

                            RegisterAccessKey();

                            HasCustomSerializationStorage.SetValue(_accessKey, true);
                            _accessKeyLocated = true;

                            UninitializeTextContainerListener();

                            TextContainer.BeginChange();
                            try
                            {
                                TextPointer underlineStart = new TextPointer(navigator, index);
                                TextRangeEdit.DeleteInlineContent(underlineStart, keyEnd);
                                _accessKey.RepositionWithContent(underlineStart);

                            }
                            finally
                            {
                                TextContainer.EndChange();
                                InitializeTextContainerListener();
                            }
                        }

                        break;
                }
                navigator.MoveToNextContextPosition(LogicalDirection.Forward);
            }

            // Convert double _ to single _
            navigator = new TextPointer(TextContainer.Start);
            string accessKeyMarker = AccessKeyMarker.ToString();
            string doubleAccessKeyMarker = accessKeyMarker + accessKeyMarker;
            while (navigator.CompareTo(TextContainer.End) < 0)
            {
                TextPointerContext symbolType = navigator.GetPointerContext(LogicalDirection.Forward);
                switch (symbolType)
                {
                    case TextPointerContext.Text:
                        string text = navigator.GetTextInRun(LogicalDirection.Forward);
                        string nexText = text.Replace(doubleAccessKeyMarker, accessKeyMarker);
                        if (text != nexText)
                        {
                            TextPointer keyStart = new TextPointer(navigator, 0);
                            TextPointer keyEnd = new TextPointer(navigator, text.Length);

                            UninitializeTextContainerListener();
                            TextContainer.BeginChange();
                            try
                            {
                                keyEnd.InsertTextInRun(nexText);
                                TextRangeEdit.DeleteInlineContent(keyStart, keyEnd);
                            }
                            finally
                            {
                                TextContainer.EndChange();
                                InitializeTextContainerListener();
                            }
                        }

                        break;
                }
                navigator.MoveToNextContextPosition(LogicalDirection.Forward);
            }
        }
开发者ID:krytht,项目名称:DotNetReferenceSource,代码行数:86,代码来源:AccessText.cs

示例2: ReadDocument


//.........这里部分代码省略.........
            _dir = LogicalDirection.Forward;
            _otherDir = LogicalDirection.Backward;
            _reader = reader;

            // Set the gravity of the cursor to always look forward.
            _cursor = _cursor.GetPositionAtOffset(0, _dir);

            while (_reader.Read())
            {
                switch (_reader.NodeType)
                {
                    case XmlNodeType.Attribute:
                        System.Diagnostics.Debug.Assert(false,
                            "Attributes should never be processed by top-level convertion loop.");
                        break;
                    case XmlNodeType.EndElement:
                        System.Diagnostics.Trace.WriteLine("WordXmlReader.ReadDocument - EndElement [" +
                            _reader.Name + "]");
                        switch (_reader.Name)
                        {
                            case WordXmlSerializer.WordParagraphTag:
                                MoveOutOfElement(typeof(Paragraph));
                                _inParagraph = false;
                                break;
                            case WordXmlSerializer.WordRangeTag:
                                MoveOutOfElement(typeof(Run));
                                _inRange = false;
                                break;
                            case WordXmlSerializer.WordStyleTag:
                                _currentStyle = null;
                                break;
                            case WordXmlSerializer.WordTextTag:
                                _inText = false;
                                break;
                        }
                        break;
                    case XmlNodeType.Element:
                        System.Diagnostics.Trace.WriteLine("WordXmlReader.ReadDocument - Element [" +
                            _reader.Name + "]");
                        switch (_reader.Name)
                        {
                            case WordXmlSerializer.WordParagraphTag:
                                if (_inParagraph)
                                {
                                    throw CreateUnexpectedNodeException(_reader);
                                }
                                SurroundWithElement(new Paragraph(new Run()));
                                ApplyStyleToParagraph();
                                _inParagraph = true;
                                if (_reader.IsEmptyElement)
                                {
                                    MoveOutOfElement(typeof(Paragraph));
                                    _inParagraph = false;
                                }
                                break;
                            case WordXmlSerializer.WordRangeTag:
                                SurroundWithElement(new Run());
                                _inRange = true;
                                break;
                            case WordXmlSerializer.WordNameTag:
                                if (!IsPopulatingStyle)
                                {
                                    throw new ArgumentException("w:name only supported on styles.");
                                }
                                break;
                            case WordXmlSerializer.WordStyleTag:
                                _currentStyle = new Style();
                                SetupCurrentStyle();
                                break;
                            case WordXmlSerializer.WordTextTag:
                                _inText = true;
                                break;
                            case WordXmlSerializer.WordBreakTag:
                                if (_inRange)
                                {
                                    MoveOutOfElement(typeof(Run));
                                    new LineBreak(_cursor);
                                    SurroundWithElement(new Run());
                                }
                                else
                                {
                                    new LineBreak(_cursor);
                                }
                                break;
                            default:
                                SetSimpleProperty();
                                break;
                        }
                        break;
                    case XmlNodeType.SignificantWhitespace:
                    case XmlNodeType.CDATA:
                    case XmlNodeType.Text:
                        if (_inText)
                        {
                            _cursor.InsertTextInRun(_reader.Value);
                        }
                        break;
                }
            }
        }
开发者ID:ClemensT,项目名称:WPF-Samples,代码行数:101,代码来源:wordxmlreader.cs


注:本文中的System.Windows.Documents.TextPointer.InsertTextInRun方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。