Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Как в RichTextBox сделать невидимым выделение Добавлено: 01.05.09 23:51  

Автор вопроса:  Стас
Здрасте!!! Я пишу программу для подсветки синтаксиса, использую для этого RichTextBox. Вот код обработки:

//Этот метод используется в классе который унаследован от RichTextBox во время обработки события OnTextChanged
void Syntax()
        {
            try
            {
                pars1.Clear();//класс который находит позиции всех слов
                pars1.Coment = Comentaries;
                int[] IndexStart, IndexLenght;
                Color[] colr;
                int n, n1, n2;
                string s;

                n = this.SelectionStart;
                n1 = this.GetLineFromCharIndex(n);
                n2 = this.GetFirstCharIndexFromLine(n1);

                if (this.Lines != null)
                {
                    if (this.Lines.Length != 0 && n1 <= this.Lines.Length - 1)
                    {
                        s = this.Lines[n1];
                        pars1.FindData(s, Data);
                        IndexStart = pars1.IndexData.IndexStart.ToArray();
                        IndexLenght = pars1.IndexData.IndexLenght.ToArray();
                        colr = pars1.IndexData.color.ToArray();
                        if (IndexStart != null)
                        {
                            for (int i = 0; i <= IndexStart.Length - 1; i++)
                            {
                                int start = n2 + IndexStart[i];
                                int Lenght = IndexLenght[i];
                                
                                this.Select(start, Lenght);
                                this.SelectionColor = colr[i];
                                this.SelectionStart = n2 + IndexStart[i] + IndexLenght[i] + 1;
                            }
                        }
                        this.SelectionStart = n;
                        this.SelectionColor = Color.Black;
                        this.SelectionLength = 0;
                    }
                }
            }
            catch { }
        }


И проблема в том, что с каждым разом как строка становиться длиннее я вижу мелькающий процесс выделения текста, а это мне не нравитса. Так вот, можно ли как то скрыть этот процесс?

Ответить

  Ответы Всего ответов: 7  

Номер ответа: 1
Автор ответа:
 VβÐUηìt



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #1
Добавлено: 02.05.09 08:48
Чувак, ты по ходу форумом малость ошибся. Хотя может здесь тебе и помогут...

Ответить

Номер ответа: 2
Автор ответа:
 Skywalker



ICQ: 300-70-6пятьЪ 

Вопросов: 62
Ответов: 545
 Web-сайт: iSkywalker.ru
 Профиль | | #2
Добавлено: 02.05.09 09:36
ну я бы изучил спецификацию RTF и просто дописывал в строку теги (или как их назвать), типа вставляешь всякие {\i курсивный текст}

http://www.microsoft.com/downloads/details.aspx?FamilyID=ac57de32-17f0-4b46-9e4e-467ef9bc5540&displaylang=en
спецификация 1.8 для word 2003

Ответить

Номер ответа: 3
Автор ответа:
 MegaÐefender



Вопросов: 19
Ответов: 313
 Web-сайт: safetyAV.narod.ru
 Профиль | | #3
Добавлено: 02.05.09 11:28
Зачем тебе это нужно?

Ответить

Номер ответа: 4
Автор ответа:
 Стас



Вопросов: 5
Ответов: 13
 Профиль | | #4 Добавлено: 02.05.09 18:13
Чувак, ты по ходу форумом малость ошибся. Хотя может здесь тебе и помогут...

ну вопервых форумом я не совсем ошибся патамушто C# и vb.net похожи
ну я бы изучил спецификацию RTF и просто дописывал в строку теги (или как их назвать), типа вставляешь всякие {\i курсивный текст}

с этим тоже проблема, уже пробовал, не помогает.
Зачем тебе это нужно?

для самосовершенствования.

может какие нить API функции есть для скрытия или смена цвета выделения?

Ответить

Номер ответа: 5
Автор ответа:
 Skywalker



ICQ: 300-70-6пятьЪ 

Вопросов: 62
Ответов: 545
 Web-сайт: iSkywalker.ru
 Профиль | | #5
Добавлено: 03.05.09 19:42
интересно в чем это может быть проблема подготовить заранее текст с тегами и присвоить его контролу...
в WPF мона в виде xml задать ртфку и оно также ничо не выделяет на ходу:
  1.  
  2. Private Sub BuildFriendsText(ByVal strings As List(Of String))
  3.         Dim text As New Text.StringBuilder()
  4.         text.Append("<Section xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"" xml:space=""preserve"" TextAlignment=""Left"" LineHeight=""Auto"" IsHyphenationEnabled=""False"" xml:lang=""en-us"" FlowDirection=""LeftToRight"" NumberSubstitution.CultureSource=""User"" NumberSubstitution.Substitution=""AsCulture"" FontFamily=""Arial"" FontStyle=""Normal"" FontWeight=""Normal"" FontStretch=""Normal"" FontSize=""11"" Foreground=""#FF000000"" Typography.StandardLigatures=""True"" Typography.ContextualLigatures=""True"" Typography.DiscretionaryLigatures=""False"" Typography.HistoricalLigatures=""False"" Typography.AnnotationAlternates=""0"" Typography.ContextualAlternates=""True"" Typography.HistoricalForms=""False"" Typography.Kerning=""True"" Typography.CapitalSpacing=""False"" Typography.CaseSensitiveForms=""False"" Typography.StylisticSet1=""False"" Typography.StylisticSet2=""False"" Typography.StylisticSet3=""False"" Typography.StylisticSet4=""False"" Typography.StylisticSet5=""False"" Typography.StylisticSet6=""False"" Typography.StylisticSet7=""False"" Typography.StylisticSet8=""False"" Typography.StylisticSet9=""False"" Typography.StylisticSet10=""False"" Typography.StylisticSet11=""False"" Typography.StylisticSet12=""False"" Typography.StylisticSet13=""False"" Typography.StylisticSet14=""False"" Typography.StylisticSet15=""False"" Typography.StylisticSet16=""False"" Typography.StylisticSet17=""False"" Typography.StylisticSet18=""False"" Typography.StylisticSet19=""False"" Typography.StylisticSet20=""False"" Typography.Fraction=""Normal"" Typography.SlashedZero=""False"" Typography.MathematicalGreek=""False"" Typography.EastAsianExpertForms=""False"" Typography.Variants=""Normal"" Typography.Capitals=""Normal"" Typography.NumeralStyle=""Normal"" Typography.NumeralAlignment=""Normal"" Typography.EastAsianWidths=""Normal"" Typography.EastAsianLanguage=""Normal"" Typography.StandardSwashes=""0"" Typography.ContextualSwashes=""0"" Typography.StylisticAlternates=""0"">")
  5.         Dim regg As New Regex("\\snick", RegexOptions.Singleline Or RegexOptions.Compiled)
  6.         Dim regg2 As New Regex("\\enick", RegexOptions.Compiled Or RegexOptions.Singleline)
  7.         For i As Integer = 0 To strings.Count - 1
  8.             text.Append("<Paragraph><Run>" + regg2.Replace(regg.Replace(strings(i), "</Run><Run Foreground=""#FF5B79C1"">"), "</Run><Run>") + "</Run></Paragraph>")
  9.         Next
  10.         text.Append("</Section>")
  11. Dim _Delegate As New DDelegate(AddressOf richFriendsSet)
  12.         Me.Dispatcher.Invoke(Windows.Threading.DispatcherPriority.Normal, _Delegate, text.ToString)
  13. End Sub
  14. Private Sub richFriendsSet(ByVal sender As Object)
  15.         Dim stream As New IO.MemoryStream()
  16.         Dim sw As New IO.StreamWriter(stream)
  17.         sw.AutoFlush = True
  18.         sw.Write(sender)
  19.         Dim textrange As New TextRange(richFriends.Document.ContentStart, richFriends.Document.ContentEnd)
  20.         textrange.Load(stream, "Xaml")
  21.         sw.Dispose()
  22.     End Sub

Ответить

Номер ответа: 6
Автор ответа:
 Стас



Вопросов: 5
Ответов: 13
 Профиль | | #6 Добавлено: 03.05.09 20:42
я не в WPF а в Winapplication работаю, а там немного по другому, но всеравно если мона опиши свой код: куда событие BuildFriendsText вставляется и как я понял в качестве параметра список подсвечиваемых слов?

Ответить

Номер ответа: 7
Автор ответа:
 Skywalker



ICQ: 300-70-6пятьЪ 

Вопросов: 62
Ответов: 545
 Web-сайт: iSkywalker.ru
 Профиль | | #7
Добавлено: 04.05.09 00:27
не, у меня были строки, в которых есть ники, я до этого их все пометил \snickСАМ_НИК\enick
в процедуру передаются эти строки, для каждой создается новый параграф, и выражение \snick заменяется на <Run Foreground="#FF5B79C1"> типа сделать цвет шрифта такой-то, а все \enick заменяются на </Run>, ну а потом просто xml загружается в richtextbox, но ет новый в WPF, обычный xml не понимает.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам