Реализация подсветки синтаксиса для поля RichText (аналогично C# в VS) - PullRequest
0 голосов
/ 07 апреля 2020

У меня есть эта простая подсветка синтаксиса, но я также должен выделить комментарии и строки. Таким образом, он делает разные цвета для синтаксиса, затем для комментариев, а также для простых строк. Вы можете помочь мне с этим?

klicslova = new Dictionary<string, Color>();

string Csharp = "abstract,event,new,struct,as,explicit,null,switch,base,extern,this,false,operator,throw,break,finally,out,true,fixed,override,try,case,params,typeof,catch,for,private,foreach,protected,checked,goto,public,unchecked,if,readonly,unsafe,implicit,ref,continue,in,return,using,virtual,default,interface,sealed,volatile,delegate,internal,do,is,sizeof,while,double,lock,stackalloc,else,static,namespace,";

string datove_typy = "bool,object,byte,float,class,uint,char,ulong,ushort,const,decimal,int,sbyte,short,void,long,enum,string";

string php_funkce = "mb_internal_en­coding,mb_strlen,mb_strpos,mb_substr,mb_strtoupper,mb_strtolower,trim,htmlspecialchars,htmlspecialchars_decode,strip_tags,nl2br,str_replace,strtr,parse_str,explode,implode,hash,session_start(),$_SESSION";

string php_slova = "and,array,clone,declare,die,echo,elseif,empty,enddeclare,endfor,endforeach,endif,endswitch,endwhile,eval,exit,extends,final,function,global,implements,include,include_once,instanceof,insteadof,isset,list,or,print,require,require_once,trait,unset,use,var,xor";

string html = "head,/,body,meta,title,link,div,a,ul,ol,header,h1,h2,h3,h4,h5,h6,button,span,form,label,input,img,p,iframe,tr,td,th,table,footer,html";

string Csharp_dodatek = "Console.ReadLine,Console.WriteLine,Console.Write,{,},(,),(),{}";

string komenty = "//qwertzuiopasdfghjklyxcvbnm1234567890";

foreach(string slovo in komenty.Split(','))
    klicslova.Add(slovo, Color.Orange);

foreach(string slovo in Csharp.Split(','))
    klicslova.Add(slovo, Color.Red);

foreach(string slovo in datove_typy.Split(','))
    klicslova.Add(slovo, Color.Blue);

foreach(string slovo in php_funkce.Split(','))
    klicslova.Add(slovo, Color.Red);

foreach(string slovo in php_slova.Split(','))
    klicslova.Add(slovo, Color.Green);

foreach (string slovo in html.Split(','))
    klicslova.Add(slovo, Color.Blue);

foreach (string slovo in Csharp_dodatek.Split(','))
    klicslova.Add(slovo, Color.Green);

        public static string Zvyraznovac(string text)
        {
            RichTextBox rtb = new RichTextBox();
            rtb.Text = text;
            rtb.Font = new Font(FontFamily.GenericSansSerif, 8.75f, FontStyle.Regular);

            int index;

            foreach(var vstup in klicslova)
            {
                index = 0;

                while ((index = rtb.Find(vstup.Key, index, RichTextBoxFinds.WholeWord)) != -1)
                {
                    rtb.Select(index, vstup.Key.Length);
                    rtb.SelectionFont = new Font(rtb.Font.FontFamily, rtb.Font.Size, FontStyle.Bold);
                    rtb.SelectionColor = vstup.Value;
                    index += 1;
                }
            }

            return rtb.Rtf;
...