日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

让Fireball CodeEditor控件支持中文

發布時間:2023/12/16 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 让Fireball CodeEditor控件支持中文 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Fireball.CodeEditor是個很強大的編輯器。實話說,就一個編輯器,附加那么多DLL,有些不合算,呵呵。

語法文件內置,編譯的時候已經提供了大量的語法文件,是全部編輯器里面內置最多的一個編輯器。可以使用DLL文件對語法進行擴充。提供設置界面對語法高亮進行設置,只是界面不咋滴,呵呵,過于簡單了一些。提供傳說中的無限級別的redo功能,這個功能的確是編輯器不可或缺的。提供find和 replace功能。中文支持不是差勁的問題,是非常非常差勁。一旦輸入中文就會出現光標位置不對,@_@.

代碼折疊存在問題,沒有辦法折疊注釋塊。正常的代碼折疊,我測試了一下C#和Java沒有問題,但是XML折疊存在問題,只能折疊CDATA,有點不可思議。

折疊的方式比較漂亮,和VS的風格一致

有意思的是,這個編輯器組件對在注釋中的東東也進行了語法高亮、括號匹配,不知道是錯誤還是就是如此,哈哈。

致命傷:輸入中文的時候出現錯誤,例如你輸入"測試",在編輯器里面會出現"測試測試",任何中文字符都是如此,如果使用Copy則不會出現這樣的問題。在輸入中文的時候redo也存在問題,原本輸入兩個漢字變成4個漢字,但是redo的時候卻需要redo 4次。打開中文文件時大多會出現亂碼。:)。

//解決重復輸入問題: //CodeEditor\Editors\EditView\EditViewControl.cs protected override void OnKeyPress(KeyPressEventArgs e) {base.OnKeyPress(e);if (!e.Handled && !_KeyDownHandled && e.KeyChar != (char)127){if (((int)e.KeyChar) < 32)return;if (!this.ReadOnly){switch ((Keys)(int)e.KeyChar){default:{InsertText(e.KeyChar.ToString());if (this.Indent == IndentStyle.Scope || this.Indent == IndentStyle.Smart){if (Caret.CurrentRow.ShouldOutdent){OutdentEndRow();}}//增加本行,如果不增加則輸入中文的時候會重復輸入一次,寒 e.Handled = true;break;}}}}if (AutoListVisible && !e.Handled && _CodeEditor.AutoListAutoSelect){string s = Caret.CurrentRow.Text;//try //{ if (Caret.Position.X - AutoListStartPos.X >= 0){s = s.Substring(AutoListStartPos.X, Caret.Position.X - AutoListStartPos.X);AutoList.SelectItem(s);}//} //catch //{ //} } } /************************************************************/ //解決打開文件出現亂碼的問題: //CodeEditor\Editors\CodeEditorControl.cs public void Open(string filename) {if (this.Document == null)throw new NullReferenceException("CodeEditorControl.Document");//添加System.Text.Encoding.Default,否則中文顯示為亂碼StreamReader swr = new StreamReader(filename, System.Text.Encoding.Default);this.Document.Text = swr.ReadToEnd();swr.Close();SetFileName(filename);this.Saved = true; }

轉載于:https://www.cnblogs.com/flying19880517/archive/2009/05/29/MakeFireballCodeEditorSupportChinese.html

總結

以上是生活随笔為你收集整理的让Fireball CodeEditor控件支持中文的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。