本文是记录我从入门到放弃写的博客 博客包括 C#、WPF、UWP、dotnet core 、git 和 VisualStudio 和一些算法,所有博客使用 docx 保存 下载:dotnet 从入门到放弃的 所有博客 .net Framework 源代码 · Ink .net Framework 源代码 · ScrollViewer .net remoting 使用事件 .net remoting 抛出异常 不能用于文件名的字符 C# 判断两条直线距离 C# 判断系统版本 C# 动态加载卸载 DLL C# 复制列表 C# 如何写 DEBUG 输出 C# 如何在项目引用x86 x64的非托管代码 C# 已知点和向量 +Tab 隐藏窗口 WPF 好看的矢量图标 wpf 如何使用 Magick.NET 播放 gif 图片 WPF 如何在 WriteableBitmap 写文字 WPF 如何在应用程序调试启动 WPF 如何在绑定失败异常 如何使用本模板搭建博客 如何入门 C++ AMP 教程 如何写毕业论文 表格 如何删除错误提交的 git 大文件 如何在 UWP 使用 wpf 的 Trigger 如何安装 btsync 如何移动 nuget
foreach (Window item in Application.Current.Windows) { if (item.Title == "") continue; // 跳过无标题窗口 = "父窗口标题") item.Close(); } WinForm时这样操作的: // 遍历并关闭所有子窗口 FormCollection childCollection = Application.OpenForms = this.Title) childCollection[i].Close(); } WPF中时这样操作的: // 遍历并关闭所有子窗口 Window[] childArray = Application.Current.Windows.Cast = this.Title) item.Close(); } 总结, 注意WPF中调试要排除无标题窗口,否则会导致程序被关闭。 这里的无标题窗口是WPF的界面调试器,如果它被关闭会导致被调试的程序也被关闭,Release程序可以不用对无标题窗口进行排除。
代金券、腾讯视频VIP、QQ音乐VIP、QB、公仔等奖励等你来拿!
foreach (Window item in Application.Current.Windows) { if (item.Title == "") continue; // 跳过无标题窗口 = "父窗口标题") item.Close(); } WinForm时这样操作的: // 遍历并关闭所有子窗口 FormCollection childCollection = Application.OpenForms = this.Title) childCollection[i].Close(); } WPF中时这样操作的: // 遍历并关闭所有子窗口 Window[] childArray = Application.Current.Windows.Cast = this.Title) item.Close(); 总结, 注意WPF中调试要排除无标题窗口,否则会导致程序被关闭。 这里的无标题窗口是WPF的界面调试器,如果它被关闭会导致被调试的程序也被关闭,Release程序可以不用对无标题窗口进行排除。
因为 Popup 的句柄具有 WS_EX_NOACTIVATE 的特性,所以 Popup 是无法获得焦点。在微软的系统,所有的窗口、控件都是有句柄,句柄就是一个指针,获得他才知道是哪个控件。 ,或者有后台代码绑定,有另一个控件绑定了输入框都有方法让用户输入的数字不显示 如果是我在调试,我会先拿到 TextChanged 事件,看是不显示还是没有接收到输入 另外需要判断当前的焦点是否在 TextBox 上 按照这个方法会发现有焦点,但是没有 TextChanged 收到输入,这时因为 WinForms 弹出的 WPF 程序消息循环的键盘事件的问题,对于中文的输入,有输入法在 HasKeyboardFocusCore 禁用TextBox的触摸后自动弹出虚拟键盘 - 唐宋元明清2188 - 博客园 解决Winform中弹出WPF窗体不能在文本框中输入的问题 - 飞鹰的专栏 - CSDN博客 Windows 窗体和 WPF 如有任何疑问,请 与我联系 。
window下的C++程序员一直呼吁微软推出native WPF,也就是非托管的WPF。不过微软给出的答案是:NO。所以WPF将定位于为.NET战略服务。 使用WPF开发的界面程序,必须带上庞大的.NET运行环境。不过随着Window 7的普及,这个状况会有所改变(window 7继承了.NET环境)。 DirectUI JavaScript是基于事件,比如在button1点击事件中,改变button2的文本。或者button1点击事件之后,button1就要禁用。 具体来说:只要界面是用文件来配置,都是界面和逻辑分开,VC的用的是*.rc文件,WPF用的是*.xaml文件、LibUIDK用的是*.ui文件。难道VC的对话框程序就不是界面和逻辑分开吗? 所以不是说用DirectUI就一定可以开发QQ、MSN类似的界面,也不是说不用DirectUI就不能开发这样的界面。它们也是没有任何关系的。 当然,什么东东都是有利有弊的。
01 前言 处理同模块不同窗体之间的通信和不同模块之间不同窗体的通信,Prism提供了一种事件机制,可以在应用程序中低耦合的模块之间进行通信,该机制基于事件聚合器服务,允许发布者和订阅者之间通过事件进行通讯 ,且彼此之间没有引用,这就实现了模块之间低耦合的通信方式。 (list<enum>、Dictionary<int,string>) C# WPF MVVM模式下在主窗体显示子窗体并获取结果 C# WPF Caliburn.Micro框架下利用Mef加载其它项目界面 C# WPF文本框TextEdit不以科学计数法显示 C# 通过正则表达式来限制控件输入有效性 C# datagridview、datagrid、GridControl增加行号 C# =>符号的使用 C# 无意间写了一段线程死锁的代码 C# 看懂这100+行代码,你就真正入门了(经典) C# WPF项目实战(经典) WPF 如何修改button圆角(经典) WPF XAML 为项目设置全局样式
01 前言 处理同模块不同窗体之间的通信和不同模块之间不同窗体的通信,Caliburn提供了一种事件机制,可以在应用程序中低耦合的模块之间进行通信,该机制基于事件聚合器服务,允许发布者和订阅者之间通过事件进行通讯 ,也可以在任何时候取消事件注册,只需要调用Unsubscribe方法即可 由于它是多播的,你可以在任意多个地方进行发布或订阅。 (list<enum>、Dictionary<int,string>) C# WPF MVVM模式下在主窗体显示子窗体并获取结果 C# WPF Caliburn.Micro框架下利用Mef加载其它项目界面 C# WPF文本框TextEdit不以科学计数法显示 C# 通过正则表达式来限制控件输入有效性 C# datagridview、datagrid、GridControl增加行号 C# =>符号的使用 C# 无意间写了一段线程死锁的代码 C# 看懂这100+行代码,你就真正入门了(经典) C# WPF项目实战(经典) WPF 如何修改button圆角(经典) WPF XAML 为项目设置全局样式
而在 WPF 中按照机制,在没有禁用实时触摸下是不支持在窗口内收到 WM_Touch 触摸消息。 因此想要在不禁用 WPF 实时触摸的情况下,获取 WM_Touch 触摸消息的一个方法是通过 WinForms 窗口来获取 在不禁用 WPF 的 RealTimeStylus 实时触摸下,依然可以通过 是互斥的,而 WinForms 默认一个控件就是一个 HWND 因此 WinForms 就能收到触摸消息 在 WPF 中,在不禁用实时触摸情况下,所有的 WPF 窗口是无法通过 RegisterTouchWindow 如果想要禁用 WPF 的实时触摸,请看 WPF 禁用实时触摸 更多触摸请看 WPF 触摸相关 ---- 如果你想持续阅读我的最新博客,请点击 RSS 订阅,推荐使用RSS Stalker 如有任何疑问,请 与我联系 。 无盈利,不卖课,做纯粹的技术博客
当前的触摸是有 HID 标准的,任何走标准 HID 设备的硬件设备,只要实现得对,咱上层软件是不需要关注硬件的细节的。 更多有关协议部分请看 Windows 的 Pen 协议 规避了硬件设备,此时咱就不需要画精力去了解硬件设备的收集触摸点的机制,以及封装数据和系统的解包是如何做的 在 WPF 的触摸在系统最底层使用的是 首先是获取触摸的逻辑,可以选择从上层的 Touch 或 Stylus 事件获取触摸消息,也可以选择从底层的 StylusPlugIn 获取,当然也可以选择禁用实时触摸通过 WM_Touch 消息获取触摸 不过采用 WM_Touch 就需要使用 WPF 模拟触摸设备 的方法 如果硬件触摸框是可以定制的,那么也可以通过 USB 读取 HID 的方式拿到触摸框原始信息 其次就是如何绘制笔迹的方式,此时可以利用 WPF 框架提供的笔迹绘制算法,在完全开源的 WPF 框架里面,可以看到有一个大文件夹很多代码用来实现一个看起来比较顺滑的笔迹。
在 WPF 程序可能因为一些坑让程序触摸失效,如果此时还可以收到系统的触摸消息,那么可以通过从触摸消息转触摸事件解决程序触摸失效但不适合所有触摸失效程序 在 WPF 的触摸代码写的不是很清真,特别是触摸到事件可能出现一些坑 ,如WPF 在触摸线程等待主线程窗口关闭会让主线程和触摸线程相互等待 和 WPF 插拔触摸设备触摸失效 等,有时候在开机的过程,如果启动快了,触摸设备还没准备好,刚好在 WPF 初始化的过程 USB 触摸设备才准备好 因为在希沃的设备上主要是触摸屏幕,用户不会有鼠标,如果出现了初始化的过程刚好就是 USB 准备好,那么这个程序将收不到任何触摸事件 在程序启动的时候,可以通过获得触摸精度和触摸点判断当前是否存在触摸设备 ,返回输入元素相对的坐标,而是返回屏幕的坐标,所以请小伙伴自己修改代码才能在项目使用,同时因为使用的是屏幕的坐标,所以在主窗口触摸的时候,如果判断当前的触摸点在屏幕之外,那么就不会触发主窗口的触摸。 因为主窗口期望的是返回的输入的点是相对的主窗口的坐标而不是相对于屏幕的坐标 所有代码放在 github 欢迎小伙伴帮忙修改 除了通过 Touch 消息之外,在 Win7 以上的系统,如 Window 10
01 简介 之前也写过好多篇CM框架相关的项目实战文章,比如: C# WPF框架Caliburn.Micro快速搭建 C# WPF框架Caliburn.Micro入门实例1 C# WPF MVVM项目实战 (进阶①) C# WPF MVVM项目实战(进阶②) C# WPF MVVM模式下在主窗体显示子窗体并获取结果 C# WPF Caliburn.Micro框架下利用Mef加载其它项目界面 C# WPF 其次,因为没有整体的构思,随着内容的增加,项目越来越显得笨重和凌乱,所以今天我重新搞了一个项目,希望以尽量少的代码,涵盖尽量多的知识点,帮助大家更好的理解和使用CM框架。 :Common.Logging和log4net用法; CM框架下命名约定以及事件关联; 用第三方库Xceed.Wpf.Toolkit.dll做等待窗体; CM框架下Conductor用法; CM框架下IWindowManager ; 双检锁单例模式用法; ListBox数据绑定以及窗体切换; 如果以上知识点你都不敢兴趣或者已经熟知,那这篇文章不适合你,看到这里你就可以关闭网页了!
这是 chromium 的一个优化,因为 chromium 认为,如果有全屏窗口盖在上面,自然此时停止播放视频可以节省资源。 其他任何的 Win32 应用,也能让 Chrome 97 的应用的视频停止播放。 因为这是 Chrome 97 在内核里的优化判断,只要有窗口满足 Windows Native Window Occlusion Detection 文档所描述的条件,将会自动停止视频的播放 此问题已算报告给 : incremental_games 最佳修复方法为禁用 Chrome 此功能,进入 chrome://flags 禁用 #calculate-native-win-occlusion 即可 另外一个应该是有坑的方法是更改自己的 WPF 应用,如给应用的窗口设置 Win32 的窗口样式,设置 WM_Popup 样式,也能解决此问题,因为绕过了 Windows Native Window Occlusion Detection
在 WPF 里面,默认标题栏的交互相对复杂,如按钮没有设置 WindowChrome.IsHitTestVisibleInChrome 属性为 True 那按钮是拿不到点击事件的。 而如果在标题栏放一个按钮,此时按钮默认是没有收到点击的,详细请看 WPF 非客户区的触摸和鼠标点击响应 如果想要让按钮能收到点击,需要使用 WPF 非客户区的触摸和鼠标点击响应 的方法,让 WPF 的按钮加上 此时双击标题栏的按钮不会让窗口最大化,但如果此时的按钮设置 IsEnabled=”False” 那么此时双击将依然让窗口最大化 而有趣的是如果在按钮 A 设置了 WindowChrome.IsHitTestVisibleInChrome 是否禁用标题栏的默认行为,是根据命中的元素决定的。 如有任何疑问,请 与我联系 。 无盈利,不卖课,做纯粹的技术博客
以前可以在 WPF 中使用有限的 UWP 控件,而现在有了 WindowsXamlHost,则可以使用更多 UWP 原生控件了。 比如下面这个: ? 因为我们不是原生的 UWP,而是 Host 在 WPF 中的 UWP 控件,所以会没有 Application。这在 UWP 控件初始化内部已经 catch 了,所以你可以忽略。 更复杂的 UWP 控件嵌入 如果希望将更多的 WPF 窗口内的 UI 部分交给 UWP 来做,那么就不能只是仅仅初始化一个 Button 就完了。 ,同时有更好的阅读体验。 如有任何疑问,请 与我联系 (walter.lv@qq.com) 。
通常部署上线后,都是放在服务器上一直开着,不允许轻易被关闭,而且最好要有一个界面,随时可以手动方便控制状态或查看运行情况,一旦发生异常情况,能及时通知管理员(Email或短信之类) 如果是采用WPF技术开发 3.最小化到系统托盘 Winform中的NotifyIcon控件在WPF中仍然可以继续使用 先 using System.Windows.Forms; 添加Windows.Forms命名空间的引用 再声明一个窗体级的变量 ,这样管理员看到提示后,有机会取消误操作 先给主窗体增加Closing事件处理,主窗体构造函数中,加入下面这一行 Closing += Window_Closing; Window_Closing事件如下 但这样还不够,如果Windows注销时,仍然会直接退出 这就需要 using Microsoft.Win32;使用Win32命名空间下的某些功能了,主窗体构造函数中,增加: //捕获关机事件 SystemEvents.SessionEnding #制作托盘程序,并禁止多个应用实例运行),但是WPF中就有点麻烦,网上搜索了一下,有朋友已经解决了这个问题 引用using Microsoft.VisualBasic.ApplicationServices
前言 现在常用的方案 Duilib+CEF 只支持Windows的选择,优点是打包文件小(使用C++) QQ、微信、有道精品课。 Qt+CEF 支持跨平台,缺点是打包文件大(使用C++)。 WPF/(WPF+CEFSharp) 打包文件小,但是性能相比前两者弱,但比Electron强,内存占用高,只支持Windows。 Electron 打包文件大,但是性能弱,内存占用高,支持跨平台。 几种方案都各有利弊,可以根据团队的情况选用,都是相对不错的,其他的方案比如Flutter,Java就不太推荐。 目前因为C++的技术栈的原因,我们的团队主要用WPF或者是Electron来做桌面端的开发。 有些界面用web开发会更好一点,所以这里就来集成CEFSharp来加载 注意 添加CEF会大幅增加安装包大小。
刚好 WPF 也是一个 Win32 窗口,此时的 WPF 也会触摸失效 这个方法因为过于强,我建议只有你在尝试过其他方法无法修复之后才能使用。 本文的方法修复触摸是根据没有什么是重启解决不了的方法修复的,本文的方法将会使用反射调用 WPF 的代码,我仅仅有测试 .NET Framework 4.8 的框架里面的逻辑,这就意味着需要你在运行的设备上安装有 .NET Framework 4.8 框架,但是对于运行的 WPF 没有任何限制,可以使用 .NET Framework 4.5 甚至是 .NET Framework 4.0 的版本。 关于在 WPF 中的触摸调用细节请看 WPF 触摸到事件 和 WPF 通过 InputManager 模拟调度触摸事件 重启注册触摸的步骤就是先反注册,然后再次注册。 如何开启 Pointer 消息请看 WPF dotnet core 如何开启 Pointer 消息的支持 在获取到 WispLogic 就可以通过反射调用 RegisterHwndForInput 和
(UWP) 但事实上, 你真正想瞄准的是 Windows。 你将能够在 .NET Core 3 上运行新的和现有的 Windows 桌面应用并体验 .NET Core 具有的所有优势。 托管在 XAML 岛中的 UWP 控件也可在面向 .NET Core 3 的 Windows 窗体和 WPF 应用中使用。 https://aka.ms/porting-to-netcore3 WPF Demo MSIX是一种Windows应用包格式,可以为所有Windows应用程序提供现代化打包体验。 开始,可以将 UWP XAML 控件直接添加到与窗口句柄 (HWND) 关联的 WPF、Windows 窗体或 C++ Win32 应用中的任何 UI 元素。
但是,不得不说,高学历真的管用,硕士博士的成材率真的很高。大多数都能成为及格的程序员。 关于框架 回到写框架这件事。在我看来,写框架这件事是个程序员都能干。 但写的好坏就另说了,所以写框架这件事还是与经验挂钩的。 在我的认知中,技术视野相对更高,技术范围更广的人写的框架会更好。所以,我认为,[实战]架构师和高级程序员,在本质上没有区别,都是程序员。 ,它们是WPF的核心类库,为了后期反射前台控件用。 WPF项目控件(UserControl)以UC作为前缀名创建,如UCTable,UCXXX。 WPF的窗体、页面、控件有且只有一个ViewModel。 这样运行WPF就会启动我们的WindowMain窗体了。 ViewModel创建窗体 主窗体已经运行了,如果我们想运行其他窗体,该怎么做呢?
数据管理:方便的数据显示和操作:应用程序开发中最常见的情形之一是在窗体上显示数据。Windows窗体对数据库处理提供全面支持。可以访问数据库中的数据,并在窗体上显示和操作数据。 包括3D控件及事件,与2D及视频合并打造更立 体效果。渐变、使用高精确的(ARGB)颜色,支持浮点类型的像素坐标。 三、该如何选择 要考虑的问题: 考虑目标客户机器配置以及系统 根据程序界面要求 项目属于什么类型,外观还是技术型 目标群体是什么样的人 开发者是什么样的人 开发人员对Winform和WPF熟悉程度怎样 WPF的画面采用XML形式书写,保存在xml中,移植性更好,也更直观易懂。 另有一点细微差别,就是winform的控件可以叠放,如两个button的坐标可以完全一样,只能看到上面的一个。 而WPF的控件不能叠放,所以如果有两个button位置相同,你必须要隐藏一个,否则两个都会被看到。 WPF用的MVVM模式 winform用的事件驱动WPF有三种应用模式:应用、浏览应用、文档应用。
云端获取和启用云服务器,并实时扩展或缩减云计算资源。云服务器 支持按实际使用的资源计费,可以为您节约计算成本。 腾讯云服务器(CVM)为您提供安全可靠的弹性云计算服务。只需几分钟,您就可以在云端获取和启用云服务器,并实时扩展或缩减云计算资源。云服务器 支持按实际使用的资源计费,可以为您节约计算成本。
扫码关注云+社区
领取腾讯云代金券