import win.ui;/*DSG{{*/var winform = win.form(text="按钮点击乐趣多";right=350;bottom=180)winform.add(button=...import win.ui;/*DSG{{*/var winform = win.form(text="窗口关闭确认体验")winform.add({ button={cls="button";text...import win.ui;/*DSG{{*/var winform = win.form(text="鼠标位置追踪";right=350;bottom=180)winform.add(edit={cls...点击“显示内容”按钮能把文本框里的内容显示在消息框中;点击“关闭窗口”会弹出确认框,询问是否真要关闭;点击“获取鼠标位置”,再点击鼠标就能在文本框显示鼠标位置。...="button";text="关闭窗口";left=250;top=120;right=330;bottom=155;z=3};button3={cls="button";text="获取鼠标位置";
) //显示窗口 winform.show(); //启动界面线程消息循环 win.loopMessage(); web.blink import win.ui; /*DSG{{*/ var winform...hasUsableFlash()); */ wb.document.getScript().execScript(js); 注意要调用页面的方法,要等待页面加载完毕 wb.waitDoc(); 获取...Title 方式1 wb.waitDoc(); winform.text = wb.document.title; 方式2 wb.waitDoc(); // 获取title var titleTags...= title.innerHTML; break; } } 方式3 有这么一种情况 页面在加载后,并没有Title,Title是后来才更改的,这样我们通过上面的方式是获取不到的...,所以这里使用定时任务获取。
网络数据采集实践一、项目背景与目标实现一个简易的网络数据采集工具,能够批量获取多个网页的内容,并支持查看与保存功能。...界面布局import win.ui;/*DSG{{*/var winform = win.form(text="网络数据采集";right=759;bottom=469)winform.add(button...采集:通过for循环遍历每个URL,使用web.view加载网页并获取HTML源码。 解析:利用string.html模块解析HTML,提取第一个div标签内的所有h2(标题)和p(正文)标签。...事件响应与文件操作winform.button.oncommand = function(id,event){ var obj = collectData(urls); winform.edit.print...}else { win.msgbox('文件保存失败') } }win.loopMessage();交互逻辑: 点击"查看内容"按钮时,调用collectData函数获取数据
invokeAndWait 我们有时候在界面中创建一个线程,仅仅是为了让界面不卡顿,我们希望用 thead.waitOne() 阻塞等待线程执行完闭(界面线程同时可以响应消息),然后我们又希望在后面关闭线程句柄,并获取到线程最后返回的值...thread.invokeAndWait,thread.invokeAndWait 的参数和用法与 thread.invoke 完全一样,区别是 thread.invokeAndWait 会阻塞并等待线程执行完毕,并关闭线程句柄,同时获取到线程函数的返回值...import win.ui; /*DSG{{*/ var winform = win.form(text="aardio form";right=759;bottom=469) winform.add(...= function(id,event){ winform.button.disabledText = {"✶";"✸";"✹";"✺";"✹";"✷"} winform.edit.text...) winform.button.disabledText = null; } winform.show() win.loopMessage();
认识Winform Winform 可以被称作窗体,主要用于制作桌面应用程序(平常使用的QQ就是桌面应用程序的范畴),里面包含大量丰富的控件供开发使用。...建立Winform项目: 打开Visual Studio 2015 【文件】-【新建】-【项目】 选择Windows窗体应用程序: 进入如下界面: ? 其中选中部分就是我们程序的界面。 ?...这就是Winform。 ? 登录界面实现 先做一个登录功能的实现吧。对于Winform我们需要知道有个叫做控件的东西。 什么是控件?...对于登录逻辑,很明显需要在用户点击登录的时候,获取用户输入的账户和密码值再去判断。 也就是在窗体的处理代码中写代码获取到的。 Come on!!! 需要给空间起个名字才能在后端的代码中获取得到哦。...添加登录事件: 直接双击登录按钮即可进入后台点击事件的处理代码: 获取用户输入的用户名和密码: ? 其实就是在后台根据控件的姓名找到他的text属性的值的哈。 ?
在WinForm里使用网页图表作配置,整个思路如下: 一、在WinForm里插入网页控件,网页控件读取的网页就是用来进行配置的表单窗体网页。...二、初始化WinForm窗体时,读取当前图表状态信息,将其作为配置信息传入网页表单模板中(不同时期调用窗体,网页内容不一样,例如用户已经修改过部分属性后的,下次初始化时,理当将这些信息更新到网页窗体中)...三、在网页窗体中使用.NET回调函数,即JS访问.NET方法,将网页上的最终表单信息回传给winForm的方法接收。...四、根据回传过来的配置信息(json字符串)在winForm里再写逻辑处理更新对应图表内容。 上述的方法具体实现,可以参考EasyShu的最新图表象形图表,截取几个图片简单说明下里面有到的控件。...同时最终控件经用户交互后的数据,直接在一个json对象中一次性获取到,无需一个个控件去获取,非常高效。
接下来,我们将深入探讨它们在WinForm开发中的应用。...一、单例模式在WinForm中的原理与实现 (一)原理 单例模式的核心思想是确保一个类在整个应用程序生命周期中只有一个实例,并提供一个全局访问点来获取这个实例。...(三)在WinForm中的应用场景 在WinForm应用中,若存在一个用于管理全局配置信息的类,就可以使用单例模式。...例如,在应用启动时,从配置文件中读取配置信息并存储在单例实例中,整个应用程序都可以通过单例实例获取这些配置,无需重复读取配置文件,提高了效率和性能。...三、总结 单例模式和异常处理在WinForm开发中都扮演着重要角色。
本文将深入探讨WinForm中的加密技术,包括常见的加密算法及其实现方式。 一、加密的重要性 在WinForm应用中,可能涉及用户的登录信息、财务数据、个人隐私等敏感内容。...如果这些数据以明文形式存储或传输,一旦被恶意获取,将会给用户和企业带来严重的损失。加密可以有效防止数据泄露和篡改,确保数据的保密性、完整性和可用性。...例如,在用户登录过程中,对密码进行加密存储,即使数据库被攻破,攻击者也难以获取到真实的密码。 二、常见加密算法 对称加密算法:如AES(高级加密标准)、DES(数据加密标准)等。...三、在WinForm中实现加密 (一)使用AES对称加密 添加命名空间:在WinForm项目中,首先需要添加System.Security.Cryptography命名空间,该命名空间提供了丰富的加密类和方法...五、总结 在WinForm开发中,合理运用加密技术能够有效提升应用程序的数据安全性。通过了解常见的加密算法及其在WinForm中的实现方式,开发者可以根据具体的业务需求选择合适的加密方案。
WinForm/WPF容器的关于对话框,用于替换平台的关于对话框。...45: /// 46: /// WinForm/WPF窗体。...WinForm/WPF容器的主界面,用于替换平台的主界面。...WinForm/WPF/Silverlight容器的登录对话框,用于替换平台的登录对话框。...WinForm/WPF容器的起始页/初始模块,用于替换平台的起始页。
背景 WPF的原生控件并不具备自身的句柄,即使使用偏门的方式获取的结果也都是控件所在窗体的句柄,并不代表该控件本身的资源,这是由WPF的自身的机制决定的。...this).Handle; IntPtr hwnd2 = ((HwndSource)PresentationSource.FromVisual(uielement)).Handle; 到此需要了解下Winform...与WPF的区别,WPF和winform最大的区别在于WPF底层使用的DirectX,winform底层使用的是GDI+,所以WPF的图形界面上更胜一筹。...为解决上述问题,在WPF中嵌入第三方控件时,往往需要借助WindowFormsHost控件,使用该控件可以包裹Winform控件,再将Winform的句柄暴露给第三方控件,即可实现在指定区域进行类似OSG...xml winform:WebBrowser> 三、WindowFormsHost
Orleans7来完成一个贪吃蛇游戏,要求如下: 可以多人在线玩 贪吃蛇可以上/下/左/右改方向 贪吃蛇吃完食物,身体长度+1 项目暂定架构 初步设想,此游戏包括一个Orleans7 Server端,和一个或多个Winform...Winform游戏客户端需实现以下功能: 需要使用IClusterClient创建SnakeGrain 让SnakeGrain加入GameGrain。...通过轮询/websocket,获取snake数据 将通过websocket获取到的数据,通过Graphics将游戏界面/Snake/食物画出。...Winform游戏客户端可通过IClusterClient实现上下左右修改方向。 架构图 之后会按照以下架构图,实现此小游戏。
前言 aardio构建界面有四种方式 winform web.form web.kit/web.blink htmlayout HTMLayout的功能特别强大,它相当于使用了HTML和CSS,但是干掉了...mod=forumdisplay&fid=128 简单示例 import win.ui; /*DSG{{*/ var winform = win.form(text="HTMLayout 圆角样式";right...=599;bottom=399;bgcolor=16777215;exmode="none";parent=...) winform.add( button={cls="button";text="Button...win.region.bitmap() 可获取背景图并根据透明色创建对应的绘图区域, 示例代码: import win.region.bitmap; win.region.bitmap(winform)...> **/ winform.show() win.loopMessage(); 页面中直接使用这样的模板语法是生效的,但是如果是加载的html文件就不生效了。
以创建一个带按钮的窗口为例:import win.ui; var winform = win.form(text="小窗口");winform.add(button={text="点我"});winform.button.oncommand...;}winform.show(); win.loopMessage(); 运行代码后,窗口成功弹出!点击按钮还会出现提示框,这种体验就像玩积木,将不同功能模块拼接,就能构建出软件。...更为奇妙的是,aardio能在程序内直接展示网页:import win.ui;import web.view; var winform = win.form(text="迷你浏览器");var wb =... web.view(winform); wb.go("https://example.com"); winform.show();win.loopMessage();运行后,窗口迅速加载网页,还可流畅滚动浏览...网络请求同样简便,几行代码就能获取网页内容:import curl; var response = curl.easy().get("https://www.baidu.com"); console.log
numericUpDown1.Minimum = 0;numericUpDown1.Maximum = 100;numericUpDown1.Increment = 1;3.获取和设置值:可以通过Value...属性获取或设置当前选定的值。...通过了解其属性和事件,可以方便地使用它来增强Winform应用程序的交互性和功能性。...3.具体案例下面是一个使用numericUpDown控件的Winform应用程序示例:在Visual Studio中,创建一个新的Winform应用程序,并向Form1窗体添加一个numericUpDown...numericUpDown1.Value; MessageBox.Show("Selected value: " + value); }}在上面的代码中,我们在button1的Click事件处理程序中获取
前言 在2月份的时候,我之前曾经写过一篇关于Windows消息与C# WinForm事件机制的文章,名为《WinForm事件与消息》。在那篇文章中,我简单探讨了一下事件和消息。...处理消息 一般来说,使用WinForm技术进行开发,绝大部分的情况下,我们都在做上述流程的最后一件事情:给各种控件注册事件。毕竟,WinForm真的为我们封装了绝大部分的事件了。...而通常的WinForm开发,我们都离不开一个东西:System.Windows.Forms.Application。...所以我们经常使用vs初始化一个基本的WinForm程序,显示的下列模板代码: /// /// 应用程序的主入口点。...该消息主要有一下的几个公共属性: System.Windows.Forms.Message HWnd 获取或设定消息的处理函数 Msg 获取或设定消息的ID号 Lparam 指定消息的
1、简介 在Winform 安装工具之Vs Installer介绍了Vs Installer的基本使用,可以满足基本需求,但是开发中遇到一些需要自定义安装流程的需求,如何通过Vs Installer...来完成,本文以在安装过程中添加一个注册表的流程来介绍. 2、实战 在Winform 安装工具之Vs Installer的基础上,如果需要在安装过程中添加自定义流程,则需要在官方可视化的操作界面之上添加安装程序类...InstallEventArgs e) => { var path = Context.Parameters["targetdir"]; //从vs Installer中获取用户选择的安装路径...WinformsCustomInstallProtocol"); }); } } 这段代码控制安装完毕之后,执行写入注册表操作(当然如果有别的需求也可以通过这种方式,自行扩展).但是这里需要注意的是如何获取...Vs Installer中用户自行选择的安装路径.这里需要回到Winform 安装工具之Vs Installer 首先给Application Folder添加安装程序类所在的类库为主输出.接着 右键Set
功能特点 免费、开源:https://github.com/cefsharp/CefSharp 完善的文档 支持JS、C#、WinForm窗体之间相互通讯与调用 兼容性较好,支持H5、CSS5...、WebGL等 支持获取Cookies较全面 其他 二、CefSharp 下载 步骤1 新建WinForm项目 新建一个WinForm窗体应用程序,目标框架选择 .NET Framework 4.5.2...(2)WinForm 窗体中输入 BIMFACE FileId,点击【加载模型/图纸】按钮,调用CefSahrp组件,加载步骤(1)中的网页。...代码如下: 在入口函数中,获取注入的 ChromiumWebBrowser 对象,名称为 _chromeBrowser。...定义一个单独的类,用于在CefSahrp组件加载网页之前,将其注入到网页中 (4)WinForm窗体中点击【 C# 调用 JS 方法】按钮。
传统WinForm应用结合Halcon库,能够快速构建高性能图像处理系统。...拖拽HWindowControl到WinForm界面,命名为hWindowControl1。...1.1 : 0.9; currentZoom *= zoomFactor; // 获取当前鼠标位置对应的图像坐标 hWindowControl1.HalconWindow.GetMposition...int deltaX = e.X - dragStartPos.X; int deltaY = e.Y - dragStartPos.Y; // 获取当前窗口可见区域...1.05 : 1.1; 七、总结与扩展 通过 WinForm + Halcon 的组合,开发者可以快速构建高性能图像交互系统。
事件驱动编程模型是 WinForm 应用程序开发的核心,它允许程序根据用户操作或系统事件做出相应的响应。以下将详细介绍如何使用事件驱动编程模型开发 WinForm 应用程序。 1....事件发布者(Event Publisher):是触发事件的对象,比如 WinForm 中的控件(按钮、文本框等)。...创建一个简单的 WinForm 项目 以下步骤假设你使用 Visual Studio 进行开发: 打开 Visual Studio,选择“创建新项目”。...示例代码如下: private void textBox1_TextChanged(object sender, EventArgs e) { // 获取文本框的当前文本 string...利用事件驱动编程模型,你可以让 WinForm 应用程序根据用户的操作和系统事件做出灵活的响应,实现丰富的交互功能。
com.picture.printWindow() //后台抓图 com.picture.printClient() //后台抓图客户区 web.rest.client().lastResponseHeaders() //用于head方法获取...process.command.testCmd(1,2,",进程命令参数" ) } mainForm.show() win.loopMessage(); 附:创建计划任务范例 import win.ui; /*DSG{{*/var winform...= ..win.form( bottom=399;right=599;text="计划任务演示" ) winform.add( edit={ bottom=361;right=574;left=21;...task.expirationTime = time().addsecond( 20 ) //20秒后结束 var task = taskScheduler.create("任务Y",function(){ winform.edit.appendText..."任务Y,定时于每小时第59分执行",'\r\n') }) task.time = { minute = 59 ; } //运行计划任务 taskScheduler.start(); winform.show