
C# 编程技巧
瑞雪骄阳
这个作者很懒,什么都没留下…
展开
-
如何捕获C#中异步编程Task中的异常
在网上看到很多关于如何捕获异步编程中的异常的方法,有很多写的都不是很明确,而且很多写的方法都不正确。异步编程中的异常捕获和同步编程的异常捕获其实不太一样,但也非常简单。使用WhenAll执行任务,代码如下: public async Task Start() { Task taskResult = null; Task<string> t1 = null; Task<string> t原创 2022-02-24 18:06:29 · 2202 阅读 · 0 评论 -
C# 中动态设定屏幕的显示方式和分辨率
在Windows系统中想要通过代码动态设定屏幕的显示方式和分辨率,就需要调用windows提供的API,不同的Windows系统,API可能会有点不一样,但大体上相同。要实现这个功能需要使用win32 API 中的EnumDisplaySettings,ChangeDisplaySettings这两个函数。1.EnumDisplaySettings 读取当前显示设置,并枚举所有受支持的显示设置。2.ChangeDisplaySettings 设定新的显示设置这两个 API 都具...原创 2021-11-11 16:51:33 · 2537 阅读 · 0 评论 -
DataGridView 的重绘
.net Winform 中的DataGridView 的外观有点难看。下面是重绘DataGridView的方法,可以重绘时参考:1.重绘DataGridView protected override void Paint( Graphics graphics, Rectangle clipBounds, Rectangle cellBounds, in原创 2013-09-16 12:51:37 · 7576 阅读 · 0 评论 -
使Winfor窗体可以不通过自带标题栏实现移动
有时候我们需要通过点击窗体的空白处,拖动实现窗体的移动。参考代码如下:public partial class Form1 : Form { private const int WM_NCHITTEST = 0x84; private const int HTCLIENT = 0x1; private const int HTCAPT原创 2013-09-16 12:55:24 · 753 阅读 · 0 评论 -
.net中压缩和解压缩的研究
最近在网上查了一下在.net中进行压缩和解压缩的方法,方法有很多,我找到了以下几种:1.利用.net自带的压缩和解压缩方法GZip参考代码如下://======================================================================== // 类名: CommonCompress /// ///原创 2007-01-24 10:31:00 · 8430 阅读 · 1 评论 -
C# 调用模板将数据写入excel中
在网上看到了一个操作Excel的类,于是保存下来供以后参考。 不过用这种方法操作Excel缺点是当数据量很大时,速度会很慢。 这个类中可能还有很多需要修改的地方,需要用的朋友可以自己修改一下。 using System;using System.IO;using System.Data;using System.Reflection;using System.D转载 2006-12-29 14:25:00 · 8994 阅读 · 2 评论 -
C# 字符串格式化函数
我们经常需要对一个字符串进行格式化,比如:要将一个长度为10的字符串1234567890转化为这种格式: (123) 456 – 7890, 就可以使用用下面的函数FormatData("1234567890","(###) ### - ####") #region 对数据进行格式化 //===================================原创 2006-12-29 14:17:00 · 2391 阅读 · 0 评论 -
关于web调用winform 用户控件的实现
在web页面中可以显示Flash,可以显示播放器,也可以显示silverlight,是否可以显示.net中的winform 用户控件呢?答案是肯定的。但需要客户端安装.net FrameWork。其实现原理和silverlight,Flash类似。要实现这个功能首先需要新建一个工程,然后添加一个用户控件,在用户控件中添加相应的控件并实现相应的功能。如果该控件需要访问网络或访问数据库,那就更原创 2008-03-01 18:21:00 · 7429 阅读 · 4 评论 -
C#编程中的好习惯
1. 避免将多个类放在一个文件里面。 2. 一个文件应该只有一个命名空间,避免将多个命名空间放在同一个文件里面。3. 一个文件最好不要超过500行的代码(不包括机器产生的代码)。 4. 一个方法的代码长度最好不要超过30行。5. 避免方法中有超过5个参数的情况。使用结构来传递多个参数。 6. 每行代码不要超过80个字符。 7. 不要手工的修改机器产生的代码。转载 2012-01-30 15:17:08 · 502 阅读 · 0 评论 -
在线编辑word文档
在安装Office2003以后,有一个ActiveX控件被安装到了系统中,这个控件位于“Program Files/Microsoft Office/OFFICE11/owssupp.dll”。通过这个控件,客户端页面上的JavaScript就可以激活本地的Office软件,来实现打开、编辑Office文档。(另,Office XP应该就已经包含这个ActiveX控件了。)转载 2012-08-20 15:55:17 · 1255 阅读 · 1 评论 -
串口编程基础
当需要和以串口连接到计算机上的设备进行通信时,就需要用到串口编程,在.net中已经将串口的操作封装到了SerialPort 类中,所以我们在利用这个类进行对串口进行访问比较方便。SerialPort类主要包括以下属性:PortName :获取或设置通信端口,包括但不限于所有可用的 COM 端口。BaudRate :串口通信的波特率。串口每秒钟传输的信号数。指的是信号被调制以后在单位时间原创 2013-09-27 14:19:03 · 1229 阅读 · 0 评论 -
C#创建不规则窗体的几种方式
转载地址:http://www.cnblogs.com/alexis/archive/2010/08/29/1811826.html现在,C#创建不规则窗体不是一件难事,下面总结一下:一、自定义窗体,一般为规则的图形,如圆、椭圆等。做法:重写Form1_Paint事件(Form1是窗体的名字),最简单的一种情况如下:System.Drawing.Drawing2转载 2013-09-27 15:49:40 · 948 阅读 · 0 评论 -
Visual Studio 2013 智能提示功能消失解决办法
Visual Studio 2013中,智能提示功能突然用不了,查了一下,使用命令行重置VS的方法解决了这个问题。步骤如下:开始菜单 -->所有程序-->Visual Studio 2013文件夹 --> Visual Studio Tools --> Developer Command Prompt for VS2013输入DOS命令: CD Common7/IDE 进入到该转载 2015-12-09 14:13:51 · 3545 阅读 · 0 评论 -
VS代码生成工具ReSharper使用手册:配置快捷键
VS代码生成工具ReSharper提供了丰富的快捷键,可以极大地提高你的开发效率。安装ReSharper后首次启动Visual Studio时,会出现一个名为ReSharper Keyboard Scheme的对话框,如下图所示:选择对话框提供的三个选项之一后的任何时候,您可以配置单独的键盘快捷键。配置单个键盘快捷键1、在主菜单上,选择Tools | Options2、转载 2015-06-04 17:18:50 · 5098 阅读 · 1 评论 -
图片处理通用类
using System;using System.IO;using System.Text;/// /// 图形转换处理类/// public class ImageOperator{ public ImageOperator() { } /// /// 获取一个图片按等比例缩小后的大小。 ///转载 2014-05-19 18:51:41 · 597 阅读 · 0 评论 -
C#的排列组合类
//-----------------------------------------------------------------------------//// 算法:排列组合类//// 版权所有(C) Snowdust// 个人博客 http://blog.youkuaiyun.com/snowdust & http://snowdust.cnblogs.com// MS转载 2014-03-12 18:59:07 · 737 阅读 · 0 评论 -
C# WinForm 滚动条换肤
滚动条换肤是C#WinForm中的难点,因为很多控件的滚动条是由系统来进行绘制的,所以滚动条的绘制就不得不使用大量的API函数来进行绘制。如果对API函数不熟悉的话,就很难达到自己想要的效果,而这部分本身就不是C#的强项,所以网上使用C++重绘滚动条的例子很多,但用C#写的确很少。 在看过这篇文章后,如果您有什么好的意见和建议,请在下面留言。 先看一下效果图:转载 2014-01-17 15:22:56 · 15527 阅读 · 3 评论 -
Mdi窗体客户区无边框显示
#region 系统API // Win32 Constants private const int GWL_STYLE = -16; private const int GWL_EXSTYLE = -20; private const int WS_BORDER = 0x00800000; private co原创 2013-12-06 15:53:21 · 2359 阅读 · 0 评论 -
图像处理之相似图片识别(直方图应用篇)
转自:http://blog.youkuaiyun.com/jia20003/article/details/7771651算法概述:首先对源图像与要筛选的图像进行直方图数据采集,对采集的各自图像直方图进行归一化再使用巴氏系数算法对直方图数据进行计算,最终得出图像相似度值,其值范围在[0, 1]之间0表示极其不同,1表示极其相似(相同)。 算法步骤详解:转载 2013-09-27 17:23:32 · 1526 阅读 · 0 评论 -
C# 图片识别(支持21种语言)
转载地址:http://www.cnblogs.com/stone_w/archive/2011/10/08/2202397.html图片识别的技术到今天已经很成熟了,只是相关的资料很少,为了方便在此汇总一下(C#实现),方便需要的朋友查阅,也给自己做个记号。图片识别的用途:很多人用它去破解网站的验证码,用于达到自动刷票或者是批量注册的目的,但我觉得它最吸引我的地方转载 2013-09-27 17:20:04 · 2213 阅读 · 0 评论 -
复习一下Asp.net里的缓存
一.Application Caching 1.使用Page.Cache对象 //类似Session的键值使用方式 protected void Page_Load(object sender, EventArgs e) { lb_Time.Text = "Hello world!"; } prot转载 2012-08-09 11:04:41 · 733 阅读 · 0 评论 -
使用System.Diagnostics.Stopwatch对程序的运行时间精确地测量
介绍 每个使用System.Diagnostics命名空间下的Stopwatch类做性能优化的人迟早会遇到一些麻烦。每个人都可以看到了,在同一台电脑相同功能的测试在运行时间上会有25% -30%不同。本文介绍如何使用Stopwatch类设计单线程测试程序获得0.1% - 0.2%准确性。有了这个精度,算法才可以进行测试和比较。背景 现代CPU有多个内核,大容量高速缓存,指令转载 2012-06-26 15:08:15 · 1276 阅读 · 0 评论 -
List<T>在搜索和排序时采用不同方法的性能比较
第一:在.net1.1时,还有很多和我一样的程序员,都会常用到ArrayList,当时要想对这种集合元素进行查找,大多会采用for循环来完成,当然也可以采用BinarySearch 方法。但自从有了.net2.0以及.net3.5后,ArrayList就已经很少使用了,大家都认为List在性能上要优越于ArrayList。既然有了List,有了LINQ,对于LIST集合的查询就不再单一。我这里列举转载 2011-12-15 15:22:46 · 995 阅读 · 0 评论 -
通过网页启动应用程序
迅雷,电驴等软件可以在浏览器中点击一个url后自动启动,并执行操作。这是咋实现的呢?其实就是在注册表上注册了一个Url-protocol的协议,代码如下:Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\TEST]@="TEST""URL Protocol"=""[HKEY_CLASSES_ROOT\TEST\De原创 2011-08-09 13:40:57 · 2277 阅读 · 0 评论 -
C#范型List的一些方法的使用
下面介绍一下List一些方法的用法List.Sort() → 排序TList.Find() → 找出一个TList.FindAll() →找出多个TList.Exist() →判断T是否存在 代码如下:GenericList.aspx 02 03http://www原创 2010-12-08 10:34:00 · 1418 阅读 · 0 评论 -
浅析lambda表达式
C#2.0介绍了一个新特性--匿名方法,允许开发者在线(inline)声明自己的函数代码而无须使用委托函数(delegate function)。C#3.0中提供了一个新特性--Lambda表达式,它提供了完成相同目标的更加简洁的格式。让我们在讨论Lambda表达式以前仔细研究一下匿名方法。 匿名方法 假设你需要创建一个按钮,当点击它的时候更新ListBox里的内容。在C#原创 2010-04-08 11:52:00 · 764 阅读 · 0 评论 -
在线编辑word文档
在安装Office2003以后,有一个ActiveX控件被安装到了系统中,这个控件位于“Program Files/Microsoft Office/OFFICE11/owssupp.dll”。通过这个控件,客户端页面上的JavaScript就可以激活本地的Office软件,来实现打开、编辑Office文档。(另,Office XP应该就已经包含这个ActiveX控件了。)转载 2012-01-30 17:43:05 · 2577 阅读 · 0 评论 -
C#代码动态编译、动态执行、动态调试
有些时候我们需要用到代码动态编译、动态执行,特别是在做表单设计器,流程设计器的时候。于是到网上搜到了这篇文章,供有需要的朋友参考前几天看到一篇关于.net动态编译的文章 .NET中的动态编译 ,很受启发。在此基础上我做了一些封装,为使调用更加简单,并增加了对动态代码调试的支持,相同代码只编译一次的支持,代码改动自动重新编译,代码引用文件的自动加载和手工加载等功能。转载 2012-01-30 14:54:22 · 1400 阅读 · 0 评论 -
C# 用HTTP协议发送、接收数据
用HTTP协议发送、接收数据:发送: /// /// post给定的url并获取返回的数据 /// /// /// /// private string GetPostResult(string url, string strXml, int timeout)原创 2010-07-01 14:27:00 · 8171 阅读 · 0 评论 -
throw;与throw ex;之间的区别
很多时候,大家当用到向上抛出异常的时候,常常是throw;和throw ex;随便用,从来都没有留意它们之间的区别.今天我才知道,它们之间是有区别的. 大家先看看这个例子:class Program{static void Main(string[] args){ThrowSample ts = new ThrowSample(); try { ts.原创 2010-06-29 17:54:00 · 620 阅读 · 0 评论 -
Timestamp的作用及与字符串的相互转换
一.Timestamp的介绍每一个数据库都有一个计数器,这个计数器记录着数据行的插入、更新行为。如果我们为一个表中增加 timestamp 列,那么,该列将记录每一个数据行的计数器值。假如数据库中当前的计数器是 20(实际中不是数字类型,为了方便解释,这里用数字类型):那么在表 A 中插入一条记录后,插入行的 timestamp 为 21;然后更新表 B 的一条记录后,更新行的 timesta原创 2008-01-22 22:37:00 · 11587 阅读 · 0 评论 -
C# 将Excel,ppt和word转化为html
有些时候可能需要将Excel,ppt和word转化为html在页面上显示。我从网上查到一些代码,记录在这里以供需要的朋友参考1.将word转化为html显示//======================================================================== // 函数名: WordToHtml ///原创 2007-01-27 18:09:00 · 10748 阅读 · 1 评论 -
Linq之动态排序(字符传入)
最近做的是一个MVC的项目,至于MVC是个啥东西,群里已经有很多朋友讲过,这里不再多讲了,本文的前提是在MVC项目的View中显示Table,对Table进行Sorting和Paging,我都知道View中要实现Sorting和Paging一定要有自己的Action进行响应,如果要实现Sorting和Paging,那么我们只能把参数传给Action,但是Action接收Sorting或Paging转载 2010-12-08 11:02:00 · 3541 阅读 · 1 评论 -
RDLC报表
随着Visual Studio 2005中文版的推出,Microsoft汉化了MSDN的大部分内容,开发者再也不用啃英文了,本来想介绍一下LocalReport的Render方法,现在您可以到http://msdn2.microsoft.com/zh-cn/library/ms252207(VS.80).aspx获得关于这部分的详细信息。之所以以前想介绍这个方法,是因为我将想大家介绍一种在Crys转载 2011-11-24 15:34:32 · 689 阅读 · 0 评论 -
使用.net中的Debug与Trace加强调试能力(SamWang)
粗略概括下关于修改BUG的几种方法: 通过调试器调试 顾名思义就是跟踪源代码进行调试,微软还提供了远程调试的功能。通过源代码的方式调试,我们一般会采用以下的几种方法:使用Exception 使用MessageBox。 使用#if Debug .. #endif 使用断言调试:其中有Debug.Assert和Trace.Assert两种,Debug只在Debug模式下转载 2012-05-30 16:42:08 · 741 阅读 · 0 评论 -
在IIS上启用Gzip压缩(HTTP压缩)
一.摘要本文总结了如何为使用IIS托管的网站启用Gzip压缩, 从而减少网页网络传输大小, 提高用户显示页面的速度. 二.前言.本文的知识点是从互联网收集整理, 主要来源于中文wiki. 使用YSlow检测网站启用了哪些优化时, Gzip是十分关键的一项. 启动Gip压缩将立竿见影的减少页面的网络传输大小. 三.HTTP压缩概述HTTP压缩是在Web服务器和浏览器转载 2012-02-14 17:10:31 · 605 阅读 · 0 评论 -
在.NET中使用Speex -- 音频数据编解码
Speex是一套开源的音频编解码库,最新版本还包含了回音消除和防抖动等功能,如果我们想开发语音聊天或视频会议这样的系统,Speex将是一个不错的选择。到 http://www.speex.org可以下载Speex的源码(编译后的dll为libspeex.dll),最新版本为1.2。不过源码是用C++开发的,直接在.NET中使用会有诸多不便,为此,我用C#将其封装,使得编解码的调用相当简单。转载 2012-02-14 14:47:07 · 1633 阅读 · 0 评论 -
.net 中Json序列化和反序列化的类
现在经常会用到json,因此经常会需要对其进行序列化和反序列化。,.NET Framewok 3.5也提供了JSON对象序列化和反序列化的类,这就是System.Runtime.Serialization.Json 命名空间下的 DataContractJsonSerializer 类。利用这个类,可以实现JSON对象的序列化和反序列化。现在我提供一个类JSON对象序列化和反序列化的类供参考用原创 2012-02-01 11:51:56 · 7736 阅读 · 0 评论 -
深拷贝与浅拷贝(Deep Copy and Shallow Copy)
今天继续利用准备WSE安全开发文章的空闲时间,完善《.NET深入学习笔记》系列(基本都是.Net重要的知识点,我都做了详细的总结,是什么、为什么、和怎么实现)。想必很多人也接触过这两个概念。做过C++的人对深浅拷贝的概念一定不会陌生。而其很多C#高级软件工程师的面试里也会问到深浅拷贝相关的问题。我今天就在总结一下,并且添加了详细的代码实现,与大家分享。一起学习一下C#的深拷贝与浅拷贝(Deep转载 2012-01-31 17:16:24 · 1150 阅读 · 0 评论 -
使用System.Diagnostics.Stopwatch对程序的运行时间精确地测量
介绍 每个使用System.Diagnostics命名空间下的Stopwatch类做性能优化的人迟早会遇到一些麻烦。每个人都可以看到了,在同一台电脑相同功能的测试在运行时间上会有25% -30%不同。本文介绍如何使用Stopwatch类设计单线程测试程序获得0.1% - 0.2%准确性。有了这个精度,算法才可以进行测试和比较。背景 现代CPU有多个内核,大容量高速缓存,指令转载 2012-01-31 16:23:44 · 619 阅读 · 0 评论