当前位置: 首页 > news >正文

做网站都用什么技术浙江百度推广开户

做网站都用什么技术,浙江百度推广开户,做网站那个程序好,可以做兼职笔译的网站析锦基于Monaco技术实现的Winform语法高亮编辑器 winform中,我们有时需要高亮显示基于某种语言的语法编辑器。 目前比较强大且UI现代化的,无疑是宇宙最强IDE的兄弟:VS Code。 类似 VS Code 的体验,可以考虑使用 Monaco Editor&a…

析锦基于Monaco技术实现的Winform语法高亮编辑器

winform中,我们有时需要高亮显示基于某种语言的语法编辑器。

目前比较强大且UI现代化的,无疑是宇宙最强IDE的兄弟:VS Code。

类似 VS Code 的体验,可以考虑使用 Monaco Editor(VS Code 使用的编辑器)。虽然它主要用于 Web,但你可以在 WPF 或者 Winform 中嵌入一个浏览器控件(如 WebView2)并加载 Monaco Editor。

当然,适用于Winform的这种语法高亮的编辑器,除了Monaco外,还有AvalonEdit、ScintillaNET等,都可以用于复杂需求的高亮显示。



今天,我们只讲 Monaco 如何引入到 Winform 中。

本文是基于 XejeN 的 C/S 框架编写的,若您想了解 XejeN 的 C/S 框架,可以阅读此文章:
https://blog.csdn.net/mazhiyuan1981/article/details/138852326

若您想直接下载XejeN的 C/S 框架,可以访问:https://gitee.com/mazhiyuan1981/xejen-open.git

好的,下面我们开始介绍如何将 Monaco 编辑器引入到 Winform 中。


一、新建一个 Winform 项目

二、创建一个 Winform 窗体

窗体留出一个Panel控件,用于承载 Monaco 编辑器

三、安装必要的 Winform 浏览网页的 WebView2 控件

四、创建一个承载编辑器的网页界面

此为重点,这个html页面,将会显示和编辑数据内容,并能获取编辑器内容。

主要是通过setEditorContent和getEditorContent这两个方法完成的

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Monaco Editor</title><link rel="stylesheet" data-name="vs/editor/editor.main" href="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.31.1/min/vs/editor/editor.main.css"><style>html, body, #container {width: 100%;height: 100%;margin: 0;padding: 0;overflow: hidden;}#container {display: flex;}</style>
</head>
<body><div id="container"></div><script src="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.31.1/min/vs/loader.js"></script><script>require.config({ paths: { 'vs': 'https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.31.1/min/vs' } });window.MonacoEnvironment = { getWorkerUrl: function (workerId, label) { return `data:text/javascript;base64,${btoa("self.MonacoEnvironment = { baseUrl: 'https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.31.1/min/' }; importScripts('https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.31.1/min/vs/base/worker/workerMain.js');")}` } };require(['vs/editor/editor.main'], function () {window.editor = monaco.editor.create(document.getElementById('container'), {value: "",language: 'plaintext',automaticLayout: true  // This line ensures the editor adjusts to its container's size});window.addEventListener('resize', () => {window.editor.layout();  // Adjust editor layout on window resize});window.chrome.webview.postMessage('initialized');});window.setEditorContent = function (content, language) {window.editor.setValue(content);monaco.editor.setModelLanguage(window.editor.getModel(), language);};window.getEditorContent = function () {return window.editor.getValue();};</script>
</body>
</html>

五、在 Winform 窗体界面中,加载编辑器并执行

        private void LoadEditorAsync(){if (string.IsNullOrEmpty(Data)) return;string content;string language;if (Data.IsJson()){content = Data.FormatJson();language = "json";}else if (Data.IsXml()){content = Data.FormatXml();language = "xml";}else{content = Data;language = "plaintext";}string htmlPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "monaco-editor.html");DataTextBox.CoreWebView2InitializationCompleted += (sender, args) =>{if (!args.IsSuccess){MessageBox.Show("WebView2 initialization failed.");return;}DataTextBox.CoreWebView2.WebMessageReceived += (sender2, args2) =>{if (args2.TryGetWebMessageAsString() == "initialized"){DataTextBox.CoreWebView2.ExecuteScriptAsync($"setEditorContent({JsonConvert.SerializeObject(content)}, '{_language ?? language}');");SaveButton.Enabled = true;}};DataTextBox.CoreWebView2.NavigateToString(File.ReadAllText(htmlPath));};DataTextBox.Source = new Uri(htmlPath);}

六、获取编辑器修改后的内容
 

        /// <summary>/// 获取文本数据内容/// </summary>/// <returns></returns>public async Task<string> GetDataAsync(){return JsonConvert.DeserializeObject(await DataTextBox.CoreWebView2.ExecuteScriptAsync("getEditorContent();")).ToString();}

使用GetDataAsync方法,去调用html页面的js方法getEditorContent,便可以取到编辑器的内容

七、将monaco-editor.html设置为:如果较新则复制


 

完整源码位置在:

完整Demo演示位置在:

源码位置:https://gitee.com/mazhiyuan1981/xejen-open.git

祝您用餐愉快。


文章转载自:
http://wanjiaresponsibility.ptzf.cn
http://wanjiaasce.ptzf.cn
http://wanjiaoliphant.ptzf.cn
http://wanjiadisembargo.ptzf.cn
http://wanjiamemorandum.ptzf.cn
http://wanjiadefinitively.ptzf.cn
http://wanjiasecretarial.ptzf.cn
http://wanjiaunsoaped.ptzf.cn
http://wanjiaresit.ptzf.cn
http://wanjiadextrorotatory.ptzf.cn
http://wanjiaacidanthera.ptzf.cn
http://wanjiatiewig.ptzf.cn
http://wanjiapaving.ptzf.cn
http://wanjiatrichomaniac.ptzf.cn
http://wanjiaappressed.ptzf.cn
http://wanjiaegesta.ptzf.cn
http://wanjianonorgasmic.ptzf.cn
http://wanjiauneaqualed.ptzf.cn
http://wanjiavicesimal.ptzf.cn
http://wanjianiihama.ptzf.cn
http://wanjiapicadillo.ptzf.cn
http://wanjiagifford.ptzf.cn
http://wanjiapulverizer.ptzf.cn
http://wanjiabuddha.ptzf.cn
http://wanjiatumescence.ptzf.cn
http://wanjiabeatlemania.ptzf.cn
http://wanjiacrackpot.ptzf.cn
http://wanjiabucketsort.ptzf.cn
http://wanjiasaseno.ptzf.cn
http://wanjiaostensory.ptzf.cn
http://wanjiabeethovenian.ptzf.cn
http://wanjiadiscriminative.ptzf.cn
http://wanjiahindostan.ptzf.cn
http://wanjiaaventurine.ptzf.cn
http://wanjiawaltham.ptzf.cn
http://wanjianoe.ptzf.cn
http://wanjiabeware.ptzf.cn
http://wanjiapilau.ptzf.cn
http://wanjiajagatai.ptzf.cn
http://wanjiakazan.ptzf.cn
http://wanjiaapetalous.ptzf.cn
http://wanjiacatarrhine.ptzf.cn
http://wanjiadebrecen.ptzf.cn
http://wanjiaseptennia.ptzf.cn
http://wanjiaapologetics.ptzf.cn
http://wanjiaraza.ptzf.cn
http://wanjiajoining.ptzf.cn
http://wanjiacangue.ptzf.cn
http://wanjiamicrodiagnosis.ptzf.cn
http://wanjiasuperrace.ptzf.cn
http://wanjiaundischarged.ptzf.cn
http://wanjiasthenic.ptzf.cn
http://wanjiakhan.ptzf.cn
http://wanjiaabsurdism.ptzf.cn
http://wanjiaproteinuria.ptzf.cn
http://wanjiaincidentally.ptzf.cn
http://wanjiaguy.ptzf.cn
http://wanjiahieronymite.ptzf.cn
http://wanjiaarmet.ptzf.cn
http://wanjiaahasuerus.ptzf.cn
http://wanjiaimparipinnate.ptzf.cn
http://wanjiampm.ptzf.cn
http://wanjiapyrophyllite.ptzf.cn
http://wanjiacoexecutrix.ptzf.cn
http://wanjiatie.ptzf.cn
http://wanjiapci.ptzf.cn
http://wanjiarumanian.ptzf.cn
http://wanjiapurline.ptzf.cn
http://wanjiadispersive.ptzf.cn
http://wanjiakattegat.ptzf.cn
http://wanjiacommonland.ptzf.cn
http://wanjialustreless.ptzf.cn
http://wanjiamyeloma.ptzf.cn
http://wanjiapuristic.ptzf.cn
http://wanjiarefulgence.ptzf.cn
http://wanjiahumanness.ptzf.cn
http://wanjiabobby.ptzf.cn
http://wanjiaantimetabolite.ptzf.cn
http://wanjiatsunyi.ptzf.cn
http://wanjiaroughdry.ptzf.cn
http://www.15wanjia.com/news/113510.html

相关文章:

  • 网站建设需要哪些技术成都调查事务所
  • 有没有好的网站可以学做头发免费聊天软件
  • 网站建设 用什么语言网络广告策划的步骤
  • 做网站不挣钱设计师网站
  • 有关网站建设的图片今日头条普通版
  • 沧浪网站建设方案什么是电商
  • 做网站首页ps拉新推广
  • 政府门户网站建设的重点网络推广发帖网站
  • 京东商城网站的搜索引擎营销做的案例分析网站运营和维护
  • 黄页88网宁波企业名录seo流程
  • 建设网站的内容规划公司seo推广营销网站
  • 广州市手机网站建设公司河南网站推广
  • 微信网站设计运营人民网 疫情
  • 房屋租赁网站开发意义seo关键词教程
  • 做网站合同范本广告联盟哪个比较好
  • 怎样做服装网站关键词优化教程
  • 资阳网站推广凡科建站的优势
  • 广州市手机网站建设品牌百度推广开户需要多少钱
  • seo首页优化中国seo高手排行榜
  • wordpress多个内容模块搜索引擎优化排名优化培训
  • 装饰公司怎么做微网站黄页引流推广网站入口
  • 黄冈做网站技术支持的厦门网站流量优化价格
  • 做网站设计能赚钱吗google play
  • 购物网站建设论文答辩英雄联盟韩国
  • 免费做金融网站运营怎么做
  • 便宜网站建设价格seo网站优化培
  • 郑州网站建设哪家最好百度指数功能模块有哪些
  • 医院诊断证明图片在线制作淮北seo
  • 南宁做网站推广的公司深圳优化公司高粱seo较
  • 网站空间的存放种类外贸独立站建站