C#/WPF
WPF从入门到精通
C# 基础/WPF/WinForm等知识点
郎涯技术
微信搜一搜:【郎涯技术】关注我。
卖码为生,有代码洁癖。不爱广度,爱深度 — 专注分享Java / 在线教育 / 视音频领域等技术。
想和你一起,每天进步一点点,做一个不凡的人!
展开
-
C# 未能创建 SSL/TLS 安全通道/未能为 SSL/TLS 安全通道建立信任关系
1、请求被中止: 未能创建 SSL/TLS 安全通道ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11;SecurityProtocolType.Tls11 可以根据实际情况换成别的版本协议2、基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系 //Trust all certificate...原创 2020-04-24 14:26:35 · 3457 阅读 · 0 评论 -
C# UrlEncode 与 Java、PHP 不一致
直接上代码:using System;using System.Globalization;using System.Text;using System.Web;namespace TestEncoder{ /// <summary> /// 字符串安全编码 /// </summary> public class URLEnco...原创 2019-01-12 21:15:51 · 1522 阅读 · 0 评论 -
C# Json.NET序列化之Newtonsoft.Json
在做开发的时候,很多数据交换都是以json格式传输的。而使用Json的时候,我们很多时候会涉及到几个序列化对象的使用:DataContractJsonSerializer,JavaScriptSerializer 和 Json.NET即Newtonsoft.Json。大多数人都会选择性能以及通用性较好Json.NET,这个不是微软的类库,但是一个开源的世界级的Json操作类库,从下面的性能对比就可原创 2015-11-30 22:09:18 · 3381 阅读 · 0 评论 -
C# 鼠标全局钩子
/// /// 鼠标全局钩子 /// public class MouseHook { private const int WM_MOUSEMOVE = 0x200; private const int WM_LBUTTONDOWN = 0x201; private const int WM_RBUTTONDO原创 2015-07-15 17:29:24 · 5706 阅读 · 3 评论 -
C# 正则表达式指南
1 运算符“表达式”属性支持以下正则表达式运算符:表达式说明.指示任何字符。\指示后面的字符应按原义而不是作为特殊字符进行解释。例如,\. 指示“.”。()将括号内的运算符分组。{n}生成前面项的 n 个转载 2015-05-12 22:01:47 · 1874 阅读 · 0 评论 -
C# Windows 7任务栏开发之跳转列表(Jump Lists)
Jump Lists可以使用户方便快捷的找到想要浏览的文件(文档、图片、音频或视频等)以及应用程序的链接或快捷方式。以IE 浏览器为例看看Jump Lists 都具备哪些功能: “Taskbar Tasks” 放置了应用程序的一些默认任务:“打开IE 浏览器”、“从任务栏取消固定”、“关闭程序”。无论是否对Jump Lists 做过开发,“Taskbar Tasks”原创 2015-04-28 07:23:02 · 2109 阅读 · 0 评论 -
C# Windows 7任务栏开发之图标闪动(Flash)
使用QQ聊天时,如果对方发出了信息QQ 图标会闪动提示,虽然Windows API 没有直接控制闪动效果的方法,但该效果在开发中可能会经常使用,下面代码为一个闪动效果类:/// /// Win32 API/// internal static class Win32{ /// /// 窗口闪动 /// /// 窗口句柄 /// 是否为闪原创 2015-04-28 07:14:24 · 3181 阅读 · 0 评论 -
C# Windows 7任务栏开发之进度条(Progress Bar)
Windows 7 任务栏为我们增添了许多其他功能:Jump Lists,Window Preview,Progress Bar,Overlay Icon 等等。 新任务栏的功能使我们的操作更加方便快捷,微软提供了方便的工具Windows API Code Pack for .NET Framework 来帮助我们完成这些开发,程序中增加Microsoft.WindowsAPIC原创 2015-04-28 06:31:51 · 6250 阅读 · 0 评论 -
C# WinForm 用户自定义控件闪烁的问题
使用WinForm开发,当使用了大量的用户自定义控件UserControl时,界面拖动或切换时就会出现闪烁的问题。解决方法主要就是重写UserControl和Form的CreateParams方法。前端调用UserControl的窗体Form这样写:protected override CreateParams CreateParams{ get {原创 2015-04-24 21:24:41 · 5034 阅读 · 6 评论 -
C# WinForm中使用WPF的控件
步骤1:创建WinForm工程步骤2:在刚刚创建的WinForm工程中新建或者添加现有的WPF用户自定义控件<UserControl x:Class="wndFormTest.ComBoBoxButton" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"原创 2015-04-23 06:42:25 · 15620 阅读 · 0 评论 -
C# XML序列化去掉XML默认的命名空间及声明头
去掉XML命名空间及声明头不影响反序列化,直接上代码:// 序列化这个对象int obj = 1;XmlSerializer serializer = new XmlSerializer(obj.GetType());// 将对象序列化输出到文件FileStream stream = new FileStream("hh.xml", FileMode.Create);XmlW原创 2015-04-03 21:26:08 · 26291 阅读 · 0 评论 -
C# XmlSerializer 对象的Xml序列化和反序列化
.Net程序执行时,对象都驻留在内存中;内存中的对象如果需要传递给其他系统使用;或者在关机时需要保存下来以便下次再次启动程序使用就需要序列化和反序列化。 System.Xml.Serialization命名空间中有一系列的特性类,用来控制复杂类型序列化。例如XmlElementAttribute、XmlAttributeAttribute、XmlArrayAttribute、Xm原创 2015-04-02 13:54:37 · 7377 阅读 · 0 评论 -
C# 注册自定义文件类型 实现自定义文件类型关联默认应用程序
在我们自己编写的应用中,经常会用自定义类型的文件来保存与应用相关的数据,比如.osf文件就是应用程序的项目文件。如果没有向Windows注册表注册该文件类型,那么.osf文件的图标将是windows的文件默认图标,并且你双击一个a.osf文件,也不会自动启动应用程序来加载a.osf文件。如何使.osf文件的图标变成我自己喜爱的图标、如何完成像点击.doc文件就自动打开word 程序的功能,下面原创 2015-04-01 22:35:27 · 6537 阅读 · 2 评论 -
VS2012、VS2013、VS2015、VS2019 代码自动注释插件【2】
Git 代码自动注释工具源码地址VS2010、VS2012、VS2013的代码自动注释插件。安装该插件后,可以在VS的菜单中显示“注释”主菜单,可以给类、函数、成员添加标准的注释,与Doxygen配合使用,可以直接生成项目的注释文档。【插件下载】http://download.csdn.net/detail/aoshilang2249/8497739高版本的VS,可以下载源码...原创 2015-03-13 12:50:32 · 15781 阅读 · 16 评论 -
C#.NET U盘插拔监控
【1】涉及的知识点1) windows消息处理函数protected override void WndProc(ref Message m)捕获Message的系统硬件改变发出的系统消息2) 硬件信息类DriveInfo【2】核心函数消息常量:/// /// windows消息常量/// class CWndProMsgConst{原创 2015-01-27 22:06:21 · 3719 阅读 · 0 评论 -
c# 异步调用 BeginInvoke与EndInvoke方法
为什么要进行异步回调?众所周知,普通方法运行,是单线程的,如果中途有大型操作(如:读取大文件,大批量操作数据库,网络传输等),都会导致方法阻塞,表现在界面上就是,程序卡或者死掉,界面元素不动了,不响应了。异步方法很好的解决了这些问题,异步执行某个方法,程序立即开辟一个新线程去运行你的方法,主线程包括界面就不会死掉了。异步调用并不是要减少线程的开销, 它的主要目的是让调用方法的主线程不需要同步等待在原创 2015-01-25 19:23:51 · 10308 阅读 · 0 评论 -
C# CS格式文件导出为Dll库
【1】使用的工具VS开发人员命令提示。安装VS后,在开始菜单的VS工具的目录下可以看到该命令工具。【2】准备需要导出的CS文件导出的Dll需要准备所有相互依赖的CS文件,如果存在多个就需要准备多个。【3】编写命令行导出Dll模版是:csc /target:library /out: "目的Dll全路径" "源CS路径1" "源原创 2014-11-27 19:42:44 · 2025 阅读 · 0 评论 -
C# 使用TraceSource记录程序日志
TraceSource类的前身是Trace与Debug。在项目的实际使用过程中,一般通过以下步骤使用:【1】定义配置文件.Config -- 配置TraceSource的源、控制级别、监听器等原创 2014-11-19 21:55:09 · 4240 阅读 · 1 评论 -
C# WinForm 封装自定义组件(控件)Dll
封装自定义控件很简单,没什么技术含量,这里通过封装自定义的数字文本框实例简单总结一下:【1】新建自定义控件库 -- Windows Forms Control Library【2】添加自定义组件 -- Component Class【3】继承TextBox,添加KeyPress事件,代码如下:using System;usi原创 2014-11-18 20:16:46 · 21385 阅读 · 1 评论 -
C# 使用自定义的特性Attribute
C#编程经常使用特性,相当于类的元数据自定义特性继承System.Attribute类自定特性命名后缀为Attribute,这样符合微软的命名风格,也符合编译器的搜索规则使用[]语法使用自定义特性可以使用反射来查看自定义特性原创 2014-10-20 22:49:59 · 3630 阅读 · 0 评论 -
C# 类索引器Class Indexer
类索引器,可以像使用数组一样的方式来访问类的数据。这种访问多见于数组,列表,词典,哈希表的快捷访问。原创 2014-10-20 21:28:27 · 1040 阅读 · 0 评论 -
C# 扩展方法Extension Method
C# .NET Framewoke 3.0就引入的新特性,提供了扩展.NET类方法的途径,可以增加代码的美观性!编写扩展方法有下面几个要求:扩展方法所在的类必须是全局的,不能是内部嵌套类, 扩展方法的类必须是静态类。扩展方法必须是静态方法。扩展方法的第一个参数的数据类型必须是要扩展类型且使用this关键字。扩展方法定义:public static原创 2014-10-14 20:38:45 · 1589 阅读 · 0 评论 -
C# 组元Tuple
组元是C# 4.0引入的一个新特性.需要基于.NET Framework 4.0或者更高版本。组元使用泛型来简化一个类的定义。组元多用于方法的返回值,如果一个函数返回多个类型,这样就不在用out\ref等输出参数了,可以直接定义一个Tuple类型就可以了。1.0 简单使用//一个成员Tuple test = new Tuple(1);Console.WriteL原创 2014-10-13 21:33:48 · 4658 阅读 · 0 评论 -
C# 泛型委托 Action/Func
泛型委托实际上就是.NET Framework预定义的委托,基本涵盖了所有常用的委托,所以一般不用用户重新声明。简洁方便!【1】无返回值的泛型委托Action系列泛型委托,是没有返回参数的委托,调用的时候和普通的委托没有声明两样。示例: Action test1 = () => { Console.WriteLine("void m原创 2014-10-10 21:53:42 · 2368 阅读 · 0 评论 -
C# λ运算符=>匿名方法 lambda表达式
Lambda 表达式是一个匿名函数,是C# 3.0引入的新特性。Lambda 运算符=>,该运算符读为“goes to”。C#为委托提供一种机制,可以为委托定义匿名方法,匿名方法没有名称,编译器会定指定一个名称。匿名方法中不能使用跳转语句跳转到该匿名方法的外部,也不能跳转到该方法的内部。也不能在匿名方法外部使用的ref和out参数。下面的代码简单的演示了Lambda表达式:原创 2014-09-24 21:04:21 · 3793 阅读 · 0 评论 -
C#.Net 垃圾回收机制GC详解
C#.Net 垃圾回收机制GC详解,涉及垃圾回收机制的优点、原理、代龄、使用方法等内容。原创 2014-08-15 10:10:13 · 8176 阅读 · 0 评论 -
C# int、long、double、char等各种内置数据类型的字节数、最大值、最小值
介绍C# byte、sbyte、int、uint、long、ulong、double、float、char、bool等各种内置数据类型的字节数、最大值、最小值。原创 2014-08-11 22:48:21 · 27580 阅读 · 2 评论 -
C# char[]与string之间的相互转换
C#中 char[]与string之间的相互转换、byte[]与string之间的相互转换、string[]转string等源码。原创 2014-07-25 11:41:59 · 3137 阅读 · 0 评论 -
18个不常见的C#关键字,您使用过几个?
介绍18个不常见的C#关键字:__arglist、__refvalue 、__makeref、__reftype、Yield、 Fixed、Checked /Unchecked 、Volatile 、StackAlloc 、Global:: 、Namespace/Class别名、extern别名 、??、@variables、Readonly、Const & readonly的区别、Default、NullableTypes原创 2014-07-15 16:45:32 · 1084 阅读 · 0 评论 -
c# 指针unsafe/fixed -- 【一】
详细介绍C#中怎样使用指针操作:unsafe、fixed等原创 2014-07-15 16:45:21 · 5521 阅读 · 0 评论 -
WPF 简介
自古以来,生产工具的先进程度就代表了生成力的先进程度-------生成力的发展要求人们不断的研发出新的生产工具,新生成工具的诞生又使得生产效率飞越。作为劳动生产的一种,计算机软件开发也需要工具,随着程序员们手中的工具越来越强大,软件开发的效率和质量明显提高。善于学习和掌握新工具、新技术的程序员们也总是能得到更多的实惠。 微软Windows操作系统已经成功推出10多年,在WInd原创 2015-03-05 21:30:44 · 1478 阅读 · 0 评论 -
WPF XAML概览
微软为了把开发模式从网络开发移植到桌面开发和富媒体网络程序的开发上,微软创造了一种新的开发语言------XAML(读作ZAML),XAML全称Extensible Application MarkUp Language。即可扩展应用程序标记语言。它在做桌面开发和富媒体网络程序开发中扮演HTML+CSS+JS的角色,成为设计师和程序员沟通的枢纽。 现在设计师和程序员一起工作,共同原创 2015-03-06 13:08:06 · 1063 阅读 · 0 评论 -
WPF XAML 从零开始认识XAML
剖析最简单的XMAL代码:<Window x:Class="MyFirstApplication.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"原创 2015-03-09 19:14:24 · 4584 阅读 · 0 评论 -
WPF XAML 系统学习XAML语法
【XAML文档的树形结构】 UI在用户眼里面是个平面结构。如下图所示,在用户眼里看来,这个界面就是一个窗体里面平铺了4个文本框和一个按钮的界面。 在传统的Visual C++、Delphi、Visual Basic6.0和Windows Form程序员的思维里,UI也是一个平面的结构。因此,程序员要做的事情就是根据美工给的给定的UI布局把控件安置原创 2015-03-15 18:52:59 · 2827 阅读 · 0 评论 -
WPF XAML X名称空间详解
X名称空间里面的成员(如X:Name,X:Class)都是写给XAML编译器看的、用来引导XAML编译器将XAML代码编译为CLR代码。【X名称空间里面到底都有些什么】 x名称空间映射的是:http://schemas.microsoft.com/winfx/2006/xaml,望文生义,它包含的类均与解析XAML语言相关,所以亦称之为“XAML名称空间”。原创 2015-03-18 21:19:49 · 5044 阅读 · 0 评论 -
WPF 控件与布局
【控件到底是什么?】 程序的本质就是“数据+算法”------用户输入原始的数据,算法处理原始数据并得到结果数据。问题就在于程序如何将结果数据显示给用户。同样一组数据,你可以使用LED阵列显示出来,或者以命令行模式借助各种格式控制符(如TAB)对齐并输出,但这些都不如图形界面(GUI Graphic User Interface)来的友好和方便。GUI的方便在于它对数据展示的直观性原创 2015-03-21 17:43:34 · 4443 阅读 · 0 评论 -
WPF Data Binding之地位与基础【一】
【1】Data Binding在WPF中的地位 从传统的Winform转移到WPF上,对于一个三层程序而言,数据存储层由数据库和文件系统组成,数据传输和处理仍然使用.NetFramework的ADO.NET等基本类(与Winform开发一样)。展示层则使用WPF类库来实现,而展示层和逻辑层的沟通就使用Data Binding来实现。可见,Data Binding在WPF中所起的作用就是高原创 2015-04-02 07:18:41 · 1583 阅读 · 1 评论 -
WPF Data Binding之控件作为源(Source)与路径(Path)【二】
Binding 的源也就是数据的源头。Binding对源的要求并不苛刻------只要它是一个对象,并且通过属性(Property)公开自己的数据,它就能作为Binding 的源。 前面一个例子已经向大家证明,如果想让作为Binding源的对象具有自动通知Binding自己属性值已经已经变化的能力,那么就需要让类实现INotifyChanged接口并在属性的Set语句中激发Pro原创 2015-04-03 06:49:49 · 7386 阅读 · 0 评论 -
WPF Data Binding之指定源(Source)的几种方法【三】
Binding的源是数据的来源,所以,只要一个对象包含数据并且能够通过属性将数据暴露出来,它就能当作Binding的源来使用。包含数据的对象比比皆是,但必须为Binding的Source指定合适的对象Binding才能正常工作。1.1 没有Source的Binding----使用DataContext作为数据源 在UI树的每个节点都有DataContext属性。Bin原创 2015-04-04 10:05:19 · 19611 阅读 · 1 评论 -
WPF Data Binding之数据的转换和校验【四】
Binding的作用就是架在Source和Target之间的桥梁,数据可以在这座桥梁的帮助下来流通。就像现实社会中桥梁需要设置安检和关卡一样,Binding这座桥上也可以设置关卡对数据进行验证,不仅如此,如果Binding两端需要不同的数据类型的时候我们还可以为数据设置转换器。 Binding用于数据有效性校验的关卡是他的ValidationRules属性,用于数据类型转换的关卡原创 2015-04-04 16:49:28 · 2809 阅读 · 0 评论