【C# .Net】
雪天飞山狐狸
吃饱穿暖活下来
展开
-
C# WinForm开发系列 - Open-Source Controls
整理了一些在WinForm开发中可以使用的开源组件.(文章及相关代码搜集自网络,仅供学习参考,版权属于原作者! ). 1. 仿office 2007的Ribbon风格面板(该控件模仿office 2007的Ribbon风格,显示操作面板。)2. .NET中最全功能的表格控件[翻译]Mathew Hall.著XPTable - .NET ListV转载 2015-07-29 14:46:51 · 1035 阅读 · 0 评论 -
C#综合揭秘——细说多线程(下)
http://kb.cnblogs.com/kb/130640/引言 本文主要从线程的基础用法,CLR线程池当中工作者线程与I/O线程的开发,并行操作PLINQ等多个方面介绍多线程的开发。 其中委托的BeginInvoke方法以及回调函数最为常用。 而 I/O线程可能容易遭到大家的忽略,其实在开发多线程系统,更应该多留意I/O线程的操作。特别是在A转载 2013-12-27 17:28:58 · 1029 阅读 · 0 评论 -
C#综合揭秘——细说多线程(上)
转载地址: http://kb.cnblogs.com/page/130487/引言 本文主要从线程的基础用法,CLR线程池当中工作者线程与I/O线程的开发,并行操作PLINQ等多个方面介绍多线程的开发。 其中委托的BeginInvoke方法以及回调函数最为常用。 而 I/O线程可能容易遭到大家的忽略,其实在开发多线程系统,更应该多留意I/O线程转载 2013-12-27 17:27:32 · 739 阅读 · 0 评论 -
C# 实现自定义事件
代码中实现了三个自定义事件,分别为自定义事件、自定义事件及自定义参数、使用Action自定义事件。using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace AppMain{ /// /// 入口转载 2013-12-27 20:01:33 · 787 阅读 · 0 评论 -
C# 泛型及机制
C# 泛型及机制 C#泛型演示[csharp] view plaincopyusing System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplica转载 2013-12-25 16:48:36 · 817 阅读 · 0 评论 -
C#泛型编程
泛型:通过参数化类型来实现在同一份代码上操作多种数据类型。利用“参数化类型”将类型抽象化,从而实现灵活的复用。例子代码:class Program { static void Main(string[] args) { int obj = 2; Testint> test = new Test转载 2013-12-25 16:46:05 · 674 阅读 · 0 评论 -
DataTable 类(二)处理表中的数据
1、添加数据(1)NewRow 方法来创建新行DataRow workRow = workTable.NewRow();//使用索引或列名来处理新添加的行,下面两行代码等价workRow["CustLName"] = "Smith"; workRow[1] = "Smith";//Add 方法可用于将行添加到 DataRowCollectionw转载 2013-12-19 16:32:59 · 736 阅读 · 0 评论 -
DataGridView(一)
1、DataGridView的特点(1)DataGridView 一次只能显示一个表。如果绑定整个 DataSet,则(DataMember 属性 要设置为表名) 。否则不会显示任何数据。(2)允许编辑数据。在单元格中双击或按 F2 来修改当前值。(3)支持自动排序。在列标题中单击该字段,其值按升序或降序对值进行排序。(默认,排序时会按字母或数字顺序进行排序,字母顺序区分大转载 2013-12-19 16:32:12 · 728 阅读 · 0 评论 -
C# TabControl
判断选中的选项卡(TabPage)(1)用TabControl 的SelectedTab属性if(tabControl1.SelectedTab == tabPage2)(2)用TabControl 的SelectedIndex 属性if(tabControl1.SelectedTab == 1)设置当前选项卡(TabPage)(1)用SelectT转载 2013-12-19 16:31:40 · 2453 阅读 · 0 评论 -
.NET中的Serialization
Serialization是.NET中一种实现对象持久性(Persistent)的机制。它是一个将对象中的数据转换成一个单一元素(通常是Stream)的过程。它的逆过程是Deserialization。Serialization的核心概念是将一个对象的所有数据看作一个独立的单元。一般说来,在两种情况下非常需要Serialization:1)当我们希望能够将对象当前的状态完整地保存到存储转载 2013-12-18 14:58:24 · 643 阅读 · 0 评论 -
c#数据采集注意事项
HttpWebRequest httpWeb = (HttpWebRequest)HttpWebRequest.Create("http://ypk.39.net/yaopin/zc/liqi/7c872.html"); httpWeb.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1;转载 2013-12-18 14:57:03 · 754 阅读 · 0 评论 -
查找算法的实现和比较
一直想比较一下查找算法,最近工作之余实现了一下算法,做了一下对比现在有一链表static ArrayList _serverList = new ArrayList();里面的数据为int,保证其值从小到大排列。当然,我们在写入数据时用查找算法找到相应位置写入就行了。1:顺序比较,这个太土,就是一个一个比,这个我就不说了,也没有实现2:折半居中查找,如果是10000转载 2013-12-18 14:56:16 · 891 阅读 · 0 评论 -
C#调用C++编写的DLL函数各种参数传递问题
1. 不返回值的参数C++ 原型:bool SendNewSms(char *szTel, char *szMessage);C#引用;[DllImport( "CdmaCard.dll",EntryPoint="SendNewSms")]public static extern bool SendNewSms(string phon转载 2013-12-18 14:54:40 · 1656 阅读 · 0 评论 -
C# Serializable
System.SerializableAttribute串行化是指存储和获取磁盘文件、内存或其他地方中的对象。在串行化时,所有的实例数据都保存到存储介质上,在取消串行化时,对象会被还原,且不能与其原实例区别开来。只需给类添加Serializable属性,就可以实现串行化实例的成员。并行化是串行化的逆过程,数据从存储介质中读取出来,并赋给类的实例变量。例:转载 2013-12-18 10:14:32 · 674 阅读 · 0 评论 -
动态生成控件及添加事件
有时候需要在程序运行到一定时候或者某个事件之后需要动态生成控件 在C#下一般方式是: private Button Db=new Button() ; Db.Name="Dy_Button" //设定名称 Db.Location=new Point(100,200);//设定位置 。。。。//其他属性设置 //这里添转载 2013-12-16 16:30:17 · 889 阅读 · 0 评论 -
异步关闭UdpClient
不知道大家有没有遇见,UdpClient在监听的时候,不管同步还是异步的,调用Close()方法或者调用线程的Abort()方法,会抛出一个异常或者出现一个正在终止线程的小窗体,我理解是UdpClient正在等待接收,线程阻塞了,所以不能强制关闭Udp连接,这个问题我在网上找了好久都没有找到好的解决方法,当时为了不让弹出那个正在终止线程的小框框,我用System.Environment.Exit(转载 2013-12-16 11:28:45 · 1910 阅读 · 0 评论 -
c#(Socket)异步套接字代码示例
下面的示例程序创建一个连接到服务器的客户端。该客户端是用异步套接字生成的,因此在等待服务器返回响应时不挂起客户端应用程序的执行。该应用程序将字符串发送到服务器,然后在控制台显示该服务器返回的字符串。 C# using System; using System.Net; using System.Net.Sockets; using System.Threading;转载 2013-12-13 16:57:27 · 1336 阅读 · 0 评论 -
C#延时函数 非Sleep
在很多时候,我们的程序,在执行下一步操作之前,需要等待上一步的执行完成,这种延时等待的方式在异步操作,或者是利用消息循环机制通信的程序中,最为体现的明显。举个API的例子:我们自己的程序是A,需要利用API结合Windows 消息机制,控制外部程序B;A向B发送一个消息,B去执行,此时A需要等待B执行完后,根据B的执行结果,再次向B发送下一个消息上面的例子,是个很典转载 2013-12-06 09:14:10 · 3128 阅读 · 0 评论 -
C#线程池
//ThreadPool(线程池)是一个静态类,它没有定义任何的构造方法(),我们只能够使用它的静态方法,这是因为,这是因为ThreadPool是托管线程池,是由CLR管理的。//ThreadPool使用WaitCallback委托,它所要做的工作是在后台进行的。使工作项的排队和运行更容易,可以给工作者线程传递一个状态对象(提供数据)。状态对象是私有的作用域位于线程层,所以不需要进行同步。转载 2013-12-27 20:07:25 · 707 阅读 · 0 评论 -
C# 4.0 并行计算部分
C# 4.0 并行计算部分 沿用微软的写法,System.Threading.Tasks.::.Parallel类,提供对并行循环和区域的支持。 我们会用到的方法有For,ForEach,Invoke。一、简单使用 首先我们初始化一个List用于循环,这里我们循环10次。(后面的代码都会按这个标准进行循环)Code转载 2013-12-27 20:08:21 · 865 阅读 · 0 评论 -
WPF入门教程系列(一) 创建你的第一个WPF项目
http://www.cnblogs.com/pengjinyu/archive/2009/08/19/1549845.htmlWPF基础知识快速学习绝不是从零学起的,良好的基础是快速入手的关键,下面先为大家摞列以下自己总结的学习WPF的几点基础知识:1) C#基础语法知识(或者其他.NET支持的语言):这个是当然的了,虽然WPF是XAML配置的,但是总还是要写代码的,转载 2014-02-20 08:38:41 · 1065 阅读 · 0 评论 -
C# WinForm开发系列 - ListBox/ListView/Panel
包含自定义绘制的ListBox, 带拖动,图片显示, 内嵌其它控件, 打印等扩展功能的ListView(文章及相关代码搜集自网络,仅供学习参考,版权属于原作者! ).1.ColorListBox ColorListBox.zip 2.RadioListBox RadioListBox.rar3.扩展CheckedListBox控件 ExChecke转载 2015-07-29 14:46:43 · 833 阅读 · 0 评论 -
C#调用C/C++动态库 封送结构体,结构体数组
因为公司一直都是做C++开发的,因客户需要要提供C#版本接口,研究了一下C#,发现其强大简洁, 在跨语言调用方面封装的很彻底,提供了强大的API与之交互.这点比JNA方便多了. Java与C#都只能调用C格式导出动态库,因为C数据类型比较单一,容易映射. 两者都是在本地端提供一套与之映射的C#/java描述接口,通过底层处理这种映射关系达到调用的目的. 一. 结构体的传递转载 2015-07-07 09:16:31 · 584 阅读 · 0 评论 -
C# 串口操作系列(1) -- 入门篇,一个标准的,简陋的串口例子。
点击打开链接我假设读者已经了解了c#的语法,本文是针对刚打算解除串口编程的朋友阅读的,作为串口编程的入门范例,也是我这个系列的基础。我们的开发环境假定为vs2005(虽然我在用vs2010,但避免有些网友用2005,不支持lambda,避免不兼容,就用2005来做例子) 一个基本的串口程序,既然是个程序了。我们就先从功能说起,包含串口选择波特率选择打开关转载 2015-03-30 17:05:45 · 1444 阅读 · 0 评论 -
C# 串口操作系列(3) -- 协议篇,二进制协议数据解析
点击打开链接 我们的串口程序,除了通用的,进行串口监听收发的简单工具,大多都和下位机有关,这就需要关心我们的通讯协议如何缓存,分析,以及通知界面。 我们先说一下通讯协议。通讯协议就是通讯双方共同遵循的一套规则,定义协议的原则是尽可能的简单以提高传输率,尽可能的具有安全性保证数据传输完整正确。基于这2点规则,我们一个通讯协议应该是这样的:头+数据长度+数据正文+校验转载 2015-03-30 17:07:53 · 815 阅读 · 0 评论 -
C# 串口操作系列(4) -- 协议篇,文本协议数据解析
点击打开链接上一篇已经介绍了协议的组成,一个协议,一般具有 :协议头+长度+数据+校验 , 文本格式可以直观的定义回车换行是协议的结尾,所以我们可以省略数据长度,增加协议尾。即:协议头 + 数据 + 校验 + 数据尾 。文本方式的数据比较容易分析。如果数据缓存,可以考虑用StringBuilder。或是不缓存也可以。文本格式数据大多有换行结尾。稍微修改即可。例如分析常见转载 2015-03-30 17:09:18 · 672 阅读 · 0 评论 -
C# 串口操作系列(2) -- 入门篇,为什么我的串口程序在关闭串口时候会死锁 ?
点击打开链接 第一篇文章我相信很多人不看都能做的出来,但是,用过微软SerialPort类的人,都遇到过这个尴尬,关闭串口的时候会让软件死锁。天哪,我可不是武断,算了。不要太绝对了。99.9%的人吧,都遇到过这个问题。我想只有一半的人真的解决了。另外一半的人就睁只眼闭只眼阿弥佗佛希望不要在客户那里出现这问题了。 你看到我的文章,就放心吧,这问题有救了。我们先回顾一下上一篇中的转载 2015-03-30 17:07:41 · 966 阅读 · 0 评论 -
C# 串口操作系列(5)--通讯库雏形
点击打开链接串口是很简单的,编写基于串口的程序也很容易。新手们除了要面对一堆的生僻概念,以及跨线程访问的细节,还有一个需要跨越的难题,就是协议解析,上一篇已经说明了:一个二进制格式的协议一般包含: 协议头 + 数据段长度 + 数据 +校验一个Ascii格式的文本协议,一般包含: 数据头 + 正文 + 数据结束标识类似的命令可能很多,类似的代码也会重复写转载 2015-03-30 17:09:27 · 686 阅读 · 0 评论 -
N种方法使用C++调用C#.NET库
转载自 http://stainboyx.wordpress.com/2010/05/22/n%E7%A7%8D%E6%96%B9%E6%B3%95%E4%BD%BF%E7%94%A8c%E8%B0%83%E7%94%A8c-net%E5%BA%93/为了减少篇幅,此文不描述何种场景下需要使用C++调用C#/VB等托管代码,而直接给出三种常规方法和一些变通方法以供参考。转载 2014-10-06 10:27:03 · 1308 阅读 · 0 评论 -
PerformanceCounter
一 PerformanceCounter 基本介绍1 简单介绍表示 Windows NT 性能计数器组件 命名空间:System.Diagnostics程序集:System(在 system.dll 中)2 构造函数(只介绍本文要用到的)PerformanceCounter (String, String, String) 功能:初始化 PerformanceCou转载 2014-08-19 10:57:14 · 747 阅读 · 0 评论 -
简单工厂模式
点击打开链接咱们先来看看一个简单的计算机案例(一个控制台应用程序):Operation是一个运算类,加减乘除方法继承于Operation。 [csharp] view plaincopyprint? /// /// 运算类 /// abstract public class Opera转载 2014-08-14 17:31:41 · 462 阅读 · 0 评论 -
PerformanceCounter 详解,使用方法
这两天写代码控制CPU的占用率,显示为一条直线或者曲线,显示为一条直线的时候用到了PerformanceCounter 这个类。 由于对这个类还是很感兴趣的,在网上找了一些资料也不是很清楚。就自己研究了一下。 首先,PerformanceCounter 分为各个category, 每个category 对应不同类型的资源,一般转载 2014-08-19 10:52:47 · 1090 阅读 · 0 评论 -
.net Lock用法
lock就是把一段代码定义为临界区,所谓临界区就是同一时刻只能有一个线程来操作临界区的代码,当一个线程位于代码的临界区时,另一个线程不能进入临界区,如果试图进入临界区,则只能一直等待(即被阻止),直到已经进入临界区的线程访问完毕,并释放锁旗标。其基本使用方式如下:C-sharp代码class Test { //定义一个私有成员变量,用于Lock转载 2014-05-08 11:22:51 · 769 阅读 · 0 评论 -
Ref与Out的区别
ref和out都是C#中的关键字,所实现的功能也差不多,都是指定一个参数按照引用传递。对于编译后的程序而言,它们之间没有任何区别,也就是说它们只有语法区别。总结起来,他们有如下语法区别:1、ref传进去的参数必须在调用前初始化,out不必,即:int i;SomeMethod( ref i );//语法错误SomeMethod( out i );//通过转载 2014-04-02 15:22:19 · 521 阅读 · 0 评论 -
【分享】深入浅出WPF全系列教程及源代码
本人10月份提出离职,但是交接很慢,估计年底才会交接完,趁着交接之际,自学了一下WPF,因为这是微软未来的发展趋势,自WIN7以来包括前不久发布的WIN8,核心还是WPF,在此,将自己的学习成果做一个总结,同时将自己学习积累的东西和广大博友分享,希望大家能共同进步。在文章的结尾我会将全系列的源代码地址提供给大家,有需要的朋友可以下载下来自己研究研究。由于之前申请WPF博客专栏一直没有申请下来,所以转载 2014-02-20 08:10:03 · 1064 阅读 · 0 评论 -
一、什么是WPF?
Windows Presentation Foundation(以前的代号为“Avalon”)是 Microsoft 用于 Windows 的统一显示子系统,它通过 WinFX 公开。它由显示引擎和托管代码框架组成。Windows Presentation Foundation 统一了 Windows 创建、显示和操作文档、媒体和用户界面 (UI) 的方式,使开发人员和设计人员可以创建更好的视转载 2014-02-20 08:39:48 · 690 阅读 · 0 评论 -
wpf只运行一个实例
在winform下,只运行一个实例只需这样就可以:1. 首先要添加如下的namespace:using System.Threading; 2. 修改系统Main函数,大致如下: bool bCreatedNew; //Create a new mutex using specific mutex name转载 2014-02-20 08:35:41 · 1331 阅读 · 0 评论 -
WPF入门教程系列(二) 深入剖析WPF Binding的使用方法
同一个对象(特指System.Windows.DependencyObject的子类)的同一种属性(特指DependencyProperty)只能拥有一个binding。这一点可以通过设置binding对象的方法名得知:public static BindingExpressionBase SetBinding( DependencyObject target,转载 2014-02-20 08:39:07 · 822 阅读 · 0 评论 -
对加密解密及数字签名的理解
对加密解密及数字签名的理解数据加密有两种类型,一种是对称加密,另一种是不对称加密;对称加密的发送方和接受方都使用同一个密钥对数据进行加密解密,因此,在发送加密数据的时候同时也要发送密钥,接收方接到密钥后才能对数据进行解密,这就有一个问题,那就是,如果别人拦截到了密钥,相当于钥匙被别人偷走了,那这个加了密的数据马上可以被破解,这就等于没有加密,所以在网络传输中不安全。非对称加转载 2013-12-06 08:24:38 · 1011 阅读 · 0 评论 -
C#实现数字签名
C#实现数字签名 [csharp] view plaincopyusing System; using System.Collections.Generic; using System.Windows.Forms; using System.Security.Cryptography; namespace DS转载 2013-12-06 08:24:10 · 5639 阅读 · 0 评论