WinForm程序或WPF程序只能打开一个子窗体 解决窗口关闭不能再打开的BUG

WinForm拖动封装:一个DragHandler类统一管理窗体与控件拖拽 拖动交互是桌面应用的基础交互范式,其本质是鼠标事件捕获、坐标变换与位置更新的协同过程。基于Windows原生消息机制(如WM_MOUSEMOVE、WM_LBUTTONDOWN)实现的拖动方案,相比Timer轮询具备更高精度与更低延迟,尤其在高DPI、多屏及实时数据采集场景下优势显著。通过WndProc子类化拦截系统消息,可精准控制鼠标捕获(SetCapture)与释放,规避事件模型丢失焦点导致的‘脱手’问题;结合锚点偏移量(Anchor Offset)策略,有效解决Panel嵌套、TabControl页签内 阅读详情

子窗体重写关闭事件,使子窗体隐藏:

 <span style="white-space:pre">	</span>/// <summary>
        /// 重写OnClosing事件 解决窗口关闭不能再打开的BUG
        /// </summary>
        /// <param name="e"></param>
        protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
        {
            this.Hide();
            e.Cancel = true;
        }


用WinForm打造酒店设计项目管理系统:架构、界面与踩坑实录 在传统行业信息化改造中,桌面应用凭借离线可用、部署简单、开发高效等优势,依然是内部管理工具的优选方案。WinForm作为.NET生态中成熟的桌面开发框架,配合C#语言,能够快速构建数据录入、查询、报表输出密集型的业务系统。本文从概念到原理,分析了如何围绕项目主线设计数据库结构,如何用TreeView构建清晰的功能导航,以及如何通过DataGridView实现高效的数据管理;同时结合报价计算、进度跟踪、附件预览等真实场景,阐述了技术价值与工程实践。针对窗体缩放、跨线程更新、高DPI显示等高频问题,也给出了可复 阅读详情

相关推荐

C# WinForm俄罗斯方块开发实战:从数据结构到游戏循环完整解析

桌面应用开发的核心在于理解UI绘制、事件处理与状态管理的协同机制。通过游戏循环(如定时器驱动)实现状态更新与渲染分离,是构建流畅交互应用的基础原理。这种模式在游戏和工具软件开发中具有广泛的技术价值,能有效管理复杂状态并响应用户输入。以经典游戏俄罗斯方块为例,其实现完美融合了二维网格数据模型、碰撞检测算法和实时渲染技术。本文将深入探讨如何运用C#与GDI+,从零构建一个完整的俄罗斯方块游戏,涵盖游戏区域与方块的数据结构设计、基于定时器的游戏主循环实现,以及键盘控制与行消除等核心功能模块。通过这个项目,开发者不

hqmln的博客 438

WPF 窗口只允许打开一次(窗口单例模型)

泛型类 using System.ComponentModel; using System.Windows; namespace WPFTest { public class WindowsManager<TWindow> where TWindow : Window, new() { static TWindow window; public static void Show(object vm) {

博客 2522

C# Winform贪吃蛇游戏开发:从零实现到性能优化与架构设计

游戏开发是理解软件工程核心概念的绝佳实践,它融合了数据结构、算法、事件驱动和图形渲染等多方面技术。以经典的贪吃蛇游戏为例,其核心原理涉及游戏循环、状态管理和碰撞检测等基础算法。在桌面应用开发中,C# Winform结合GDI+绘图技术,为构建此类交互式应用提供了高效解决方案。通过实现游戏引擎与界面分离的架构,开发者不仅能掌握双缓冲绘图以消除画面闪烁,还能深入理解性能优化策略,如使用高效数据结构进行碰撞检测。这种从基础逻辑到高级优化的完整实现路径,尤其适合希望提升工程实践能力的C#开发者,将理论知识转化为可运

weixin_33742618的博客 501

WPF 确保主窗口只能运行一次。

WPF 窗口 打开一次

wj070621的博客 328

WinForm界面美化四大支柱:DPI感知、双缓冲、SVG图标与自绘控件

WinForm作为Windows原生GUI框架,其性能稳定性和低资源占用在工业上位机、嵌入式监控等场景中具有不可替代性。其视觉陈旧问题并非源于技术落后,而是默认未启用DPI感知、双缓冲渲染、高质量文本绘制等核心能力。通过激活Per-Monitor V2 DPI Awareness可解决高分屏缩放错乱;全局启用OptimizedDoubleBuffer与后台缓冲绘制能彻底消除TreeView滚动和实时波形图闪烁;结合ImageSharp轻量解析SVG并按DPI动态渲染,实现矢量图标无失真适配;再辅以Owner

weixin_29200741的博客 132

Winform UI界面设计例程(三)子窗口嵌入及其主题变换

本专栏会有二十多篇关于winform UI界面设计的案例讲解,包括自定义控件的美化等,完全不使用任何第三方美化库,纯代码编写,写出的界面可以达到WPF界面的效果 接上一篇, 上一篇文章中有一个bug在这里我补充一下,就是隐藏边框 最大化之后,无法显示系统任务栏 而且在窗体正常情况下,窗体上边沿还是有边框,所以优化如下 运行测试,没有问题 panel4主要是来嵌入子窗口的,我们新建两个子窗口,其余的大家可以仿制 form2,控件大家随意拖拽一点即可 form3...

奔跑的郑的博客 1146

把.net core WebAPI托管给窗体Winform或WPF程序

作为程序员,我们的生产皆来源于需求,本次的需求是把.Net core WebAPI托管进窗体程序,缘由是.net core的控制台窗口很容易被人误关,常见的办法是把程序做成windows服务,开机自启,不过windows服务是完全隐藏的,如果用户想在任务栏中看到进程,想在退出时输入密码确认,我暂时能想到的就是用窗体程序接管WebAPI程序,需求不是非常好,但也合情合理。是想要的效果,OK,Restore恢复窗体,Exit退出进程,需要出确认框,输入账号密码退出。关闭窗口,最小化到托盘。然后,编译两个程序。

gaiyi09的博客 1251

Winform布局自适应:通用窗体控件缩放辅助类设计与实现

在桌面应用开发中,界面布局自适应是提升用户体验的关键技术,尤其在高DPI和多分辨率环境下。其核心原理是通过记录控件初始状态与父容器尺寸的基准关系,在容器尺寸变化时按比例动态计算并应用新位置与大小,实现控件与窗体的协同缩放。这项技术解决了传统绝对像素布局在跨设备显示时的错位、模糊问题,对于维护遗留Winform项目或开发需要兼容多种屏幕的桌面软件具有重要工程价值。本文聚焦Winform场景,深入解析基于“记录-缩放”模型的递归遍历实现,并探讨如何通过辅助类封装,高效处理嵌套容器、特殊控件及性能优化等实践挑战,

weixin_33912246的博客 637

[WPF]如何在关闭非模态子窗体时用消息框确认——解决最小化窗体时抛出的异常...

又是一个看起来很简单的问题。像下面这样在Closing里弹出个MessageBox确认一下不就行了?   public static void OnWindowClosing(object sender, CancelEventArgs e) {     if (MessageBox.Show(string.Format("Are you sure to close the {0}?", ...

weixin_34332905的博客 271

C# Winform上位机实现Modbus温湿度采集系统实战

工业自动化领域,上位机软件作为设备与数据管理的核心,常需实现稳定高效的采集与监控。C# Winform凭借其部署简单、开发效率高,成为中小型工控项目的常用选择。Modbus协议作为工业通信标准,支持RTU与TCP两种模式,广泛应用于传感器数据读取。通过串口或以太网,上位机可轮询温湿度传感器,解析寄存器数据,并利用SQLite数据库完成历史存储与查询。合理设计通信层与数据层,配合后台线程与批量写入策略,能有效避免界面卡顿与数据丢失,保障7x24小时稳定运行。本文围绕温湿度采集系统,分享C# Winform上位

weixin_33826609的博客 370

Winform轻量级SCADA系统:S7-200CN通信与实时监控实战

SCADA系统是工业自动化中实现数据采集、监控与控制的核心技术,其本质在于协议解析、实时性保障与人机交互协同。在老旧产线(如Windows 7工控机、S7-200CN PLC)场景下,传统组态软件因协议支持弱、响应滞后、二次开发封闭而难以落地;而基于.NET Framework的Winform架构凭借低内存占用、高启动速度和强兼容性,成为轻量级SCADA的理想载体。本文聚焦S7-200CN PPI协议直连、Winform Timer精准调度、ChartSurface双缓冲趋势图渲染及PropertyGrid

weixin_30599769的博客 1084

C# WinForm 运行久了就内存不足

转载地址:https://www.debugease.com/csharp/4441632.html 1、WinForm,主窗体-子窗体模式 2、关闭子窗体,使用Hide(),打开子窗体,使用Show() 3、软件就是ERP、进销存,支持图片,Socket上传下载 4、表格数据多大概这些,然后,软件运行久了,就达到几百M,然后用着用着就突然弹出内存不足,好恐怖,请问解决思想好,谢谢。 ==============================================================

波波诸葛伟 8334

C# WinForm高精度计时器实现1ms定时的原理与实践

高精度计时器是工控、医疗设备、音视频同步等实时场景的基础能力,其核心在于突破Windows消息循环与托管线程调度的固有延迟。基于QueryPerformanceCounter(QPC)硬件时间戳与自适应忙等待策略,可在用户态实现亚毫秒级确定性触发,兼顾精度与CPU资源平衡。相比System.Windows.Forms.Timer(10~50ms抖动)和Threading.Timer+Invoke(3ms以上延迟),该方案直接运行于UI线程,规避跨线程开销,天然支持WinForm控件安全更新。典型应用包括传感

weixin_34195364的博客 315

WPF个人助手更新

大家好,这次更新主要是去除一些无关的功能,界面做了很大的调整,以前都是自己写的 UI ,最近也引入了 WPF-UI,挺不错的,特此表示感谢,也希望大家会喜欢,别的也就不多说了,本软件以实用性为主,采用MVVM模式,小巧、使用方便。 具体功能与更新如下: 计划任务:本软件由m.sh.lin0328@163.com开发与维护,如有好的意见或建议,可发送邮件到m.sh.lin0328@16...

weixin_33887443的博客 173

WPF 每个窗口只打开一次

WPF 每个窗口只打开一次

WPF 确保主窗口只能运行一次

WPF 确保主窗口只能运行一次。

c# 多线程技术文章汇总

浅述WinForm多线程编程与Control.Invoke的应用 内容补充:浅述WinForm多线程编程与Control.Invoke的应用 System.Threading.Timer 类用于窗体如何访问控件 Wintellect Power Threading 的使用梗概 C#多线程学习(一) 多线程的相关概念 Thread系列——Thread.Sleep(0...

weixin_33749242的博客 470

WPF单实例应用程序-一次打开一个exe

基于 Microsoft.VisualBasic.dll

上一篇: PowerDesigner如何设计表之间的关联
下一篇: SQLite通用数据库类
CLeopard
博客等级 码龄15年 180粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值