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


C# Selection.Equals方法代码示例

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


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

示例1: SetTextVisualSelections

        // Преобразует весь текст, содержащийся в заданном параграфе в отформатированный текст, согласно переданному списку выделений
        public static void SetTextVisualSelections(Paragraph paragraph, List<Selection> selections = null)
        {
            if (paragraph == null)
                return;

            string text = (new TextRange(paragraph.ContentStart, paragraph.ContentEnd)).Text;

            paragraph.Inlines.Clear();

            if (selections == null || selections.Count == 0)
            {
                paragraph.Inlines.Add(new Run(text));
                return;
            }

            // Сортируем переданный список выделений по приоритету
            selections.Sort((a, b) => { return a.priority.CompareTo(b.priority) * (-1); });

            bool currentSelectionIsDefault;
            Selection currentSelection = new Selection();

            bool lastSelectionIsDefault = true;
            Selection lastSelection = new Selection();

            int selectionStart = 0;

            // Проходимся по каждому символу в тексте параграфа
            for (int charIdx = 0; charIdx < text.Length; charIdx++)
            {
                currentSelectionIsDefault = true;

                foreach (var selection in selections)
                {
                    if (charIdx >= selection.range.firstIndex && charIdx <= selection.range.lastIndex)
                    {
                        currentSelectionIsDefault = false;
                        currentSelection = selection;
                        break;
                    }
                }

                // Если это первый символ в тексте статьи, то добавлять новый run смысла нет
                bool needToAddNewRun = charIdx != 0 &&
                    // Нужно добавлять новый run, если:
                    (
                    // прошлый символ был дефолтным, а текущий недефолтный и наоборот (поменялась дефолтность)
                    currentSelectionIsDefault != lastSelectionIsDefault ||
                    // символ недефолтный, но при этом поменялись свойства selection-а
                    (!currentSelectionIsDefault && !currentSelection.Equals(lastSelection))
                    );

                if (needToAddNewRun)
                {
                    // Добавляем Run в параграф с заданным форматом выделения
                    AddInlineToParagraph(paragraph, text.Substring(selectionStart, ((charIdx - 1) - selectionStart) + 1), lastSelectionIsDefault, lastSelection);

                    // Ставим позицию начала следующего элемента Run в текущий символ
                    selectionStart = charIdx;
                }

                lastSelectionIsDefault = currentSelectionIsDefault;
                lastSelection = currentSelection;
            }

            // Добавляем последний параграф
            AddInlineToParagraph(paragraph, text.Substring(selectionStart, ((text.Length - 1) - selectionStart) + 1), lastSelectionIsDefault, lastSelection);
        }
开发者ID:UltimaBeaR,项目名称:FLangDictionary,代码行数:68,代码来源:FlowDocumentFormatter.cs


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