C#/WinForm/WPF
Ironyho
这个作者很懒,什么都没留下…
展开
-
如何将 WPF 控件嵌入 Win32 程序中
如何将WPF控件嵌入Win32程序中如标题所述,本文将介绍如何将 WPF控件 嵌入到 Win32程序 的窗体中,其中的 WPF控件 使用 C# 开发,Win32程序 使用 C++/CLI 开发。在 Win32 窗口上托管 WPF 控件的关键是 System::Windows::Interop::HwndSource 类,这个类将 WPF 内容封装在 Win32 窗口中,允许它作为子窗口合并到用...原创 2018-06-26 20:07:51 · 1510 阅读 · 0 评论 -
WPF UnhandledException
WPF UnhandledException在 WPF 程序中,通常可以通过 Application.DispatcherUnhandledException 或 AppDomain.UnhandledException 事件来处理全局 未处理异常,其中前者是由 WPF 框架提供的,后者是由 .NET Framework 提供的,后者能够捕获更多的未处理异常。对于 Task 中的未处理异常,这两...原创 2018-09-30 19:54:32 · 3003 阅读 · 3 评论 -
C# 电子白板软件开发
C# 电子白板软件开发给大家介绍两个 C# 电子白板软件开源项目,其中一个是基于 WinForm 平台开发的,另一个是基于 WPF 平台开发的。这两个项目实现的功能类似,最初都是由 Alex Farber 发布在 CodeProject 开源平台之上的,其中 WinForm 版本发布于 2005 年,WPF 版本发布于 2008 年。遗憾的是这两个原始项目都已经从 CodeProject 移除了...原创 2018-10-22 07:37:32 · 5702 阅读 · 18 评论 -
WPF 后台创建 DateTemplate
WPF 后台创建 DateTemplate在 WPF 编程中,我们通常都是在前台 XAML 中通过标记语言来编写 DataTemplate 的。曾今有小伙伴在 Stack Overflow 上提问,如何在后台通过 C# 代码来创建 DataTemplate ?我搜索了一番,找到了 FrameworkElementFactory 类,它便是生成 DataTemplate 的核心功臣。先看一下 X...原创 2018-10-29 13:18:23 · 3107 阅读 · 3 评论 -
.NET AppDomain
.NET AppDomain操作系统启动托管程序后,会调用 CLR 来托管该程序,CLR 在初始化时会默认创建一个 AppDomain 来运行托管代码。AppDomain 是为了隔离而设计的,它将程序集限定在某个域中执行,而不影响其它域的状态,它可以极大地提高托管程序的稳定性:支持动态卸载程序集:在插件架构中,不必等到进程结束时才释放,避免不必要的内存占用实现了程序集隔离:将一些容易引起...原创 2018-10-29 13:22:06 · 835 阅读 · 0 评论 -
C# DateTIme 转时间戳
C# DateTIme 转时间戳时间戳是指格林威治时间 1970 年 01 月 01 日 00 时 00 分 00 秒(北京时间 1970 年 01 月 01 日 08 时 00 分00 秒)起至现在的总秒数。在 C# 中将 DateTime 转换为时间戳时,需要注意如下两点:时区要统一,最好先使用 ToLocalTime() 或 ToUniversalTime() 方法来统一时区。在 U...原创 2018-11-05 12:29:01 · 9694 阅读 · 2 评论 -
C# Newtonsoft.Json 自定义
C# Newtonsoft.Json 自定义当你看到这篇文章时,你应该或多或少地了解 Newtonsoft.Json,它是一套流行的 .NET 高性能 JSON 框架,能够轻松地实现 .NET 对象和 JSON 字符串间的相互转换。本文将首先简介 Newtonsoft.Json 的基本使用,然后介绍如何实现序列化的自定义,即自定义 JsonConverter。基础使用先定义一个普通的类型,然...原创 2018-11-05 12:31:32 · 3829 阅读 · 1 评论 -
log4net 详解
非常完善的 log4net 详细说明作者:未知(搜了很久,未能找到原创者)https://www.cnblogs.com/lzrabbit/archive/2012/03/23/2413180.html1、概述log4net 是 .Net 下一个非常优秀的开源日志记录组件。log4net 记录日志的功能非常强大。它可以将日志分不同的等级,以不同的格式,输出到不同的媒介。本文主要是介绍如...转载 2018-11-11 17:15:14 · 982 阅读 · 0 评论 -
解决 http_404_webOC 下载提示
解决 http_404_webOC 下载提示最近,某个项目中使用了 System.Windows.Forms.WebBrowser 控件,这是一个 WinFomrs 上的 IE 浏览器控件。在某些计算机上通过该控件访问一个不存在的网址时,会弹出一个 http_404_webOC 下载提示。搜索了一下资料,如果要完全避免此提示的弹出,则需要修改一些注册表项。但是,作为一个应用程序,去修改计算机...原创 2018-11-12 07:03:13 · 7445 阅读 · 2 评论 -
曲线(笔迹)简化算法
曲线(笔迹)简化算法场景是这样的,在一端进行书写,另一端还原书写的笔迹。要实现笔迹的还原,就得记录笔迹经过的轨迹点,当然这些都是可以在书写过程获取到的。但是问题在于,笔迹中的轨迹点比较多,数据量比较大,不便于传输。因此,我们需要通过某种算法,剔除某些不重要的点,从而减少数据量。下面的代码是在 C#/WPF 框架下编写的,引用了 System.Windows.Media 命名空间中的一些类型。...原创 2018-11-16 08:29:41 · 4892 阅读 · 1 评论 -
WPF 获取系统 DPI 的多种方法
WPF 获取系统 DPI 的多种方法由于 WPF 的尺寸单位和系统的 DPI 相关,我们有时需要获取 DPI 值来进行一些界面布局的调整,本文汇总了一些 WPF 程序中获取系统 DPI 的方法。首先,定义如下结构体来分别保存 X 方向 和 Y 方向的分量值,通常情况下两个值是一致的。public struct Dpi{ public double X { get; set; }...原创 2018-10-15 01:08:44 · 5373 阅读 · 0 评论 -
WPF 高 DPI 下的 SizeToContent
WPF 高 DPI 下的 SizeToContent这两天解决了一个 WPF 界面方面的问题:某个窗体运行在 1366*768 分辨率的屏幕上,并且窗口设置了 SizeToContent="WidthAndHeight" 属性,即窗体的尺寸将随内容而变化。当系统的 DPI 为默认的 96 时,一切呈现正常;但是当设置系统的 DPI 为 144 时,界面右侧被截断。既然窗体的尺寸随内容而变化,DP...原创 2018-10-14 23:53:25 · 4409 阅读 · 4 评论 -
一种简单的贝塞尔拟合算法
C# 一种简单的贝塞尔拟合算法前两天实现了一项功能,在一端进行书写,在另一端还原笔迹。由于两端的开发平台和绘图引擎不一致,书写端的笔迹很平滑,而另一端还原出来的笔迹为折线。为了使两端保持一致的效果,需要在还原端对笔迹进行贝塞尔拟合。本文将首先介绍贝塞尔曲线的基本原理及公式推导,然后提出一种简单的二次贝塞尔近似拟合算法,并用 C# 编程实现之。贝塞尔曲线相信大家都或多或少了解过贝塞尔曲线,...原创 2018-10-06 10:26:56 · 8789 阅读 · 7 评论 -
C# GUI 程序显示控制台
C# GUI 程序显示控制台我们在调试程序时,通常会将日志输出到 控制台,以监控其运行状态是否符合预期。对于一个 C# GUI 程序(如 WinForms 或 WPF)而言,如果在 IDE 中进行调试运行,Console.WriteLine() 方法会将内容输出到 IDE 的控制台中。然而在同一时间内,IDE 只能呈现单个程序的控制台输出,如果涉及到多个 GUI 程序的联合调试,应该如何将其它...原创 2018-09-10 00:24:29 · 3143 阅读 · 1 评论 -
C# 后台调用 CMD 执行命令
C#后台调用CMD执行命令有时会在程序中调用系统的命令行工具 cmd.exe 来静默执行一些系统命令,然后获取返回值。本文将展示 .NET/C# 静默运行 cmd 并执行命令的方法,包括 有返回值 和 无返回值 两种。无返回值public static void Execute(string command){ var processInfo = new Proces...原创 2018-09-17 01:17:34 · 4014 阅读 · 0 评论 -
C# 获取计算机 MAC 的方法
C#获取计算机MAC的方法软件在上报日志时,通常会带上一些硬件信息,以便于区分设备或用户,计算机物理地址(MAC)便是首当其冲的选择。本文将介绍 .NET/C# 获取计算 MAC 的方法:NetworkInterfaceWMI (Windows Management Instrumentation)ipconfig/allNetworkInterface使用 Syste...原创 2018-09-17 01:19:01 · 3648 阅读 · 0 评论 -
C# 增删查防火墙例外
C#增删查防火墙例外通过 netsh advfirewall firewall 命令来对防火墙例外进行增、删、查。/// <summary>/// Provide methods to add\remove\check filewall exception./// </summary&原创 2018-09-17 08:55:59 · 2293 阅读 · 0 评论 -
如何将 WPF 控件包装为 ActiveX 组件
如何将 WPF 控件包装为 ActiveX 组件前面的一篇文章中介绍了 如何将WPF控件嵌入Win32程序中,其要求 Win32 程序支持 C++/CLR(托管代码)。然而在我们实际工程中,要使现有的 Win32/MFC 项目支持 CLR,可能涉及到较大的改动。那么,能不能在 纯非托管程序 中嵌入 WPF 控件呢?答案当然是肯定的,那就是 COM/ActiveX 组件。 COM是 Co...原创 2018-09-10 20:12:42 · 1360 阅读 · 0 评论 -
WPF Popup 中 IME 不跟随 TextBox
WPF Popup中IME不跟随TextBox在 WPF 程序中,如果一个 TextBox 被放置在 Popup 中,当在这个 TextBox 中进行输入时,输入法(IME) 的备选框不会显示在该 TextBox 旁边,而是显示在 Windows 右下角,如下动图所示。如果 TextBox 是直接放置在 Window(或其子控件)之上的,IME 会呈跟随 TextBox 呈现。此乃 W...原创 2018-09-24 19:17:20 · 1500 阅读 · 3 评论 -
WPF 巧用动画反转
WPF巧用动画反转在 WPF 程序中,假设有这么一个需求:界面上有个矩形,点击某个按钮后,矩形沿某条 复杂的路径 移动,并停在路径的终点处;此时点击另一个按钮,矩形沿刚才的路径反向移动,最终停在路径的起始位置。假设路径非常复杂,要单独构建如上的两个动画,需要很大的工作量。那么,能否仅构建一个动画,使其能暂停到一半的地方,并且可以反向回到初始状态呢?其实现方案为,设置 Storyboard 的 ...原创 2018-09-25 00:51:11 · 1574 阅读 · 0 评论 -
WPF 动画进阶编程
WPF动画进阶编程前端时间在实现某项业务需求时,涉及到元素状态的控制,较为深入地使用了 WPF Animation(动画)。原本对动画有所了解,但是本次前前后后还遇到不少问题,看似简简单单的 Animation/Storyboard,其中竟有如此多的猫腻。今天把动画相关的问题分享出来,扒一扒动画的原理,与大家一起探讨学习。主要内容动画的基本用法IAnimatable.BeginAnim...原创 2018-09-25 07:55:34 · 868 阅读 · 0 评论 -
WPF 精确计算三维元素的投影范围
WPF 精确计算三维元素的投影范围在 WPF 程序中,二维元素可以使用 VisualTreeHelper.GetDescendantBounds(Visual reference) 来获取其内容的范围,三维元素可以使用 GetContentBounds(Visual3D reference) 来获取其在二维平面的投影范围。然而,当三维元素中的模型非正向(存在旋转或偏移)时,上面方法获取的范围并不...原创 2018-10-07 15:55:00 · 796 阅读 · 0 评论 -
C# 8.0 新特性
C# 8.0 新特性作者:Rwinghttps://blogs.msdn.microsoft.com/dotnet/2018/11/12/building-c-8-0原文:https://blogs.msdn.microsoft.com/dotnet/2018/11/12/building-c-8-0译注:原文主标题如此,但内容大部分为新特性介绍,所以意译标题为 “C# 8.0 新特性...转载 2018-11-14 13:42:17 · 1038 阅读 · 2 评论