1. <nobr id="easjo"><address id="easjo"></address></nobr>

      <track id="easjo"><source id="easjo"></source></track>
      1. 
        

      2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
      3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>
          貴州做網站公司
          貴州做網站公司~專業!靠譜!
          10年網站模板開發經驗,熟悉國內外開源網站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等網站程序,可為您提供網站建設,網站克隆,仿站,網頁設計,網站制作,網站推廣優化等服務。我們專注高端營銷型網站,企業官網,集團官網,自適應網站,手機網站,網絡營銷,網站優化,網站服務器環境搭建以及托管運維等。為客戶提供一站式網站解決方案?。?!

          使用AvalonEdit實現WPF的Lua編輯器

          來源:互聯網轉載 時間:2024-01-29 07:46:49

          原文發布于:https://www.chenxublog.com/2019/07/14/use-avalonedit-make-wpf-lua-editor.html

          由于LLCOM里面內置了Lua代碼的編輯器,所以我就使用了AvalonEdit這個輪子,不過一開始的Lua語言支持讓我一頓好找

          不過好在找到了網上的資料,我就把整個實現過程貼在下面

          準備

          先去nuget安裝一下AvalonEdit,以備后面使用:

          接著把下面的文件內容,保存為Lua.xshd文件名的文件:

          <?xml version="1.0"?><SyntaxDefinition name="SharpLua" extensions=".slua;.lua" xmlns="http://icsharpcode.net/sharpdevelop/syntaxdefinition/2008">  <!-- The named colors 'Comment' and 'String' are used in SharpDevelop to detect if a line is inside a multiline string/comment -->  <Color name="Comment" foreground="#ff999999" exampleText="-- comment" />  <Color name="String" foreground="#fff99157" />  <Color name="Punctuation" />  <Color name="MethodCall" foreground="#ffffcc66" fontWeight="bold"/>  <Color name="NumberLiteral" foreground="#ff99cc99"/>  <Color name="NilKeyword" fontWeight="bold"/>  <Color name="Keywords" fontWeight="bold" foreground="#ff6699cc" />  <Color name="GotoKeywords" foreground="#ffcc99cc" />  <Color name="Visibility" fontWeight="bold" foreground="#fff99157"/>  <Color name="TrueFalse" fontWeight="bold" foreground="#ff66cccc" />  <RuleSet name="CommentMarkerSet">    <Keywords fontWeight="bold" foreground="#fff2777a">      <Word>TODO</Word>      <Word>FIXME</Word>    </Keywords>    <Keywords fontWeight="bold" foreground="#fff2777a">      <Word>HACK</Word>      <Word>UNDONE</Word>    </Keywords>  </RuleSet>  <!-- This is the main ruleset. -->  <RuleSet>    <Span color="Comment">      <Begin color="XmlDoc/DocComment">---</Begin>      <RuleSet>        <Import ruleSet="XmlDoc/DocCommentSet"/>        <Import ruleSet="CommentMarkerSet"/>      </RuleSet>    </Span>    <Span color="Comment" ruleSet="CommentMarkerSet" multiline="true">      <Begin>--\[[=]*\[</Begin>      <End>\][=]*]</End>    </Span>    <Span color="Comment" ruleSet="CommentMarkerSet">      <Begin>--</Begin>    </Span>    <Span color="String">      <Begin>"</Begin>      <End>"</End>      <RuleSet>        <!-- span for escape sequences -->        <Span begin="\\" end="."/>      </RuleSet>    </Span>    <Span color="String">      <Begin>'</Begin>      <End>'</End>      <RuleSet>        <!-- span for escape sequences -->        <Span begin="\\" end="."/>      </RuleSet>    </Span>    <Span color="String" multiline="true">      <Begin color="String">\[[=]*\[</Begin>      <End>\][=]*]</End>    </Span>    <Keywords color="TrueFalse">      <Word>true</Word>      <Word>false</Word>    </Keywords>    <Keywords color="Keywords">      <Word>and</Word>      <Word>break</Word>      <Word>do</Word>      <Word>else</Word>      <Word>elseif</Word>      <Word>end</Word>      <Word>false</Word>      <Word>for</Word>      <Word>function</Word>      <Word>if</Word>      <Word>in</Word>      <Word>local</Word>      <!--<Word>nil</Word>-->      <Word>not</Word>      <Word>or</Word>      <Word>repeat</Word>      <Word>return</Word>      <Word>then</Word>      <Word>true</Word>      <Word>until</Word>      <Word>while</Word>      <Word>using</Word>      <Word>continue</Word>    </Keywords>    <Keywords color="GotoKeywords">      <Word>break</Word>      <Word>return</Word>    </Keywords>    <Keywords color="Visibility">      <Word>local</Word>    </Keywords>    <Keywords color="NilKeyword">      <Word>nil</Word>    </Keywords>    <!-- Mark previous rule-->    <Rule color="MethodCall">      \b      [\d\w_]+  # an identifier      (?=\s*\() # followed by (    </Rule>    <Rule color="MethodCall">      \b      [\d\w_]+  # an identifier      (?=\s*\") # followed by "    </Rule>    <Rule color="MethodCall">      \b      [\d\w_]+  # an identifier      (?=\s*\') # followed by '    </Rule>    <Rule color="MethodCall">      \b      [\d\w_]+  # an identifier      (?=\s*\{) # followed by {    </Rule>    <Rule color="MethodCall">      \b      [\d\w_]+  # an identifier      (?=\s*\[) # followed by [    </Rule>    <!-- Digits -->    <Rule color="NumberLiteral">      \b0[xX][0-9a-fA-F]+  # hex number      |      ( \b\d+(\.[0-9]+)?   #number with optional floating point      | \.[0-9]+           #or just starting with floating point      )      ([eE][+-]?[0-9]+)? # optional exponent    </Rule>    <Rule color="Punctuation">      [?,.;()\[\]{}+\-/%*&lt;&gt;^+~!|&amp;]+    </Rule>  </RuleSet></SyntaxDefinition>

          Lua.xshd放到解決方案資源管理器中,生成操作改為嵌入的資源:

          使用

          xaml里的代碼如下:

          <avalonEdit:TextEditor Grid.Row="2" xmlns:avalonEdit="http://icsharpcode.net/sharpdevelop/avalonedit" Name="textEditor" FontFamily="Consolas" FontSize="10pt" ShowLineNumbers="True" LostFocus="TextEditor_LostFocus"/>

          然后在窗體的loaded事件中運行下面的代碼即可:

          //快速搜索功能SearchPanel.Install(textEditor.TextArea);//設置語法規則string name = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name + ".Lua.xshd";System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();using (System.IO.Stream s = assembly.GetManifestResourceStream(name)){    using (XmlTextReader reader = new XmlTextReader(s))    {        var xshd = HighlightingLoader.LoadXshd(reader);        textEditor.SyntaxHighlighting = HighlightingLoader.Load(xshd, HighlightingManager.Instance);    }}

          效果

          效果什么的。。。自己去下載一個LLCOM看看就知道了嘛:

          標簽:avalonedit-

          網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...

          在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...

          在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...

          火車票每天幾點更新?除了第一次出票外,有時鐵路部門也會在開票后的其他時段分批出票。一般來說,每天都會有半天或半天的時間出票。2. 在車票開始銷售30分鐘后搶票車票開始銷售30分鐘后,可能會有一批未完成的車票被退回,這是搶票的好時機。3. 開車前15天趕緊退票開車前15天以上不收手續費,所以在這個時候搶票搶票。車站一般在開車前一天11:30-13:00、18:00-19:00預留少量車票放行限行車票...

          白溝箱包外放加工信息?白溝包對外加工,主要根據客戶 要求,女包,男包由聚氨酯或皮革,以及行李箱和禮品袋。白溝有很多箱包加工廠,一般都是老客戶或者熟人介紹的。白溝箱包加工有對外加工的嗎?我們這里好多都在加工書包和玩具。我也想試試聯系業務怎么辦?你好,我 我來自白溝。白溝現在屬于生產。加工定制,一條龍產業鏈,生產箱包是批發零售,各種箱包都是國際化的,只有你能 別想款式了,還有更低的價格。如果你有興趣來...

          900泰銖和1億日元是人民幣要多少錢?1泰銖=0.1761人民幣,900泰銖=158.49人民幣.1日元=0.0529人民幣,100000000日元=5290000人民幣世界各國金錢的匯率是多少?1美金=6.8345元人民幣1元=12.457元人民幣1瑞士法郎=6.206元人民幣1加元=6.435元人民幣1新加坡幣=4.823元人民幣1澳幣=5.867元人民幣1元人民幣=4.616臺幣1元人民幣=...

          TOP
          国产初高中生视频在线观看|亚洲一区中文|久久亚洲欧美国产精品|黄色网站入口免费进人
          1. <nobr id="easjo"><address id="easjo"></address></nobr>

              <track id="easjo"><source id="easjo"></source></track>
              1. 
                

              2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
              3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>