# WinForm
9 篇文章
WinForm 里的简单 HTTP 服务器与客户端
同事说「用 WebApi、Get、Post 传数据」,其实就是 HTTP。用 HttpListener 写一个带路由的小服务器、用 HttpClient 写客户端,和 AGV 调度系统交换 JSON。顺带纠正几个关于 HTTP 的常见误解:连接、超时、权限。
WinForm用 LiveCharts 画实时时序图
用 LiveCharts 的 StepLineSeries 画 E84 信号的实时步进图:时间轴、枚举标签、实时追加数据,以及悬停时线越来越粗的问题和改源码的办法。补充数据量控制和更适合高频数据的图表库。
WinFormWinForm 常用控件:TreeView 与 DateTimePicker
TreeView 的节点增删、图标、选中事件和 FullPath;DateTimePicker 的显示格式、自定义格式和取值。补充:大量节点时的 BeginUpdate,以及只选日期、选时间段的写法。
WinFormC# 实现一个虚拟键盘
触摸屏工控机没有实体键盘,用 keybd_event 模拟按键做一个屏幕键盘:单键、组合键、中文输入。补充:按钮不能抢焦点、更推荐的 SendInput,以及直接调用系统触摸键盘。
WinFormWinForm 加载界面卡死:UI 线程被堵住了
在 Main 里先 Show 一个加载窗体再做初始化,进度条和文字都不动。原因是消息循环还没跑起来。解决办法是让加载窗体在自己的线程里 Application.Run;同类问题「Show 之后窗体显示不全」也一并说清楚。
WinFormWinForm 窗体闪烁怎么办
关闭 ShowDialog 弹出的窗体时主窗体一闪,原因是在 Close 之后又 Dispose 了自己。顺带整理 WinForm 里其他几种常见闪烁的原因和办法:双缓冲、WS_EX_COMPOSITED、SuspendLayout。
WinFormWinForm 的颜色与画刷
控件颜色的三种来源(自定义、Web、系统)在代码里分别怎么写,Color.FromArgb 的几个重载和 32 位 ARGB;再加上 GDI+ 五种画刷的用法和效果图。
WinFormWinForm 窗体句柄什么时候创建,事件按什么顺序
new 一个窗体并不会创建窗口句柄,Show 或 Application.Run 时才会;这就是对刚 new 出来的窗体调用 Invoke 会报错的原因。附窗体显示和关闭的完整事件顺序。
WinFormWinForm 小坑合集
窗体图标、边框样式、启动位置;ComboBox 清空后怎么设 SelectedIndex;窗体隐藏时停止刷新;无边框窗体最大化遮住任务栏;只允许运行一个实例。五篇短笔记合在一起。