
c#程序设计
文章平均质量分 69
杨友山
多年软件开发管理经验,曾在腾讯、中兴通讯等企业从事软件开发和管理工作,熟悉技术和开发管理;曾在微软从事售前技术支持,接触过产品销售。目前在从事低代码平台类产品研发相关工作。 擅长.NET领域,前端angular,vue,typescript,Oracle,云计算相关。
展开
-
关于串口编程的(一)
所谓串口,也叫串行接口,即COM口,采用串行通讯方式(即数据一位一位的传送)的接口。也就是电脑后面D形9针插口。最近做了两个都和串口编程有关的功能,一个是不间断电源,一个是RS232型串口打印机。因为是串口所以主要的用法都不难,难点是对设备的相应命令的理解和使用上。因为不同类型的、不同厂家的设备命令是不同的,因为也没法总一个总结。那就对于串口的简单用法做一些总结吧。主要用到的类是Seria原创 2013-06-04 17:16:28 · 3555 阅读 · 0 评论 -
C#提高知识 ADO.NET实体数据模型(3)-关于回滚
ADO.NET 实体数据模型,其实我是不太喜欢用这个,主要是遇到复杂查询时linq语句写起来比较多,当然也是可以直接执行sql语句的,但是执行复杂sql时还是执行不了,因为连接有问题。但是ADO.NET实体有个优点就是,能实时更新数据库的变化,并且自动更新模型,基于这一点也是我在使用纯sql语句的时候,还是坚持使用了不少实体数据模型的。这几天打算用实体模型写一个多表顺序修改的的数据库操作的功能,也原创 2013-10-30 14:14:19 · 4507 阅读 · 0 评论 -
C#提高知识-001:反射的应用和原理(一)
在项目中,程序集间的相互引用是经常遇到的。比如,主程序引用各分模块,各分模块引用公用程序集,以及平行的程序集间为了某些功能的实现也需要相互引用。这样的引用一方面是迫不得已的选择,而另一方面也反映出系统设计的水平。下面,简单介绍一下C#中的一种机制——反射。反射可以在避免某些情况下的程序集引用问题,比如主程序引用各功能模块的问题,当然其它模块间也是可以用反射的,只是使用是否方便这些问题需要在使用前根原创 2013-10-16 04:07:18 · 4706 阅读 · 0 评论 -
自己重写右键菜单
在程序中我们会用到文本框,如果要让右键菜单按照我们的要求显示,可以用如下方法实现,自己定义Item控件来显示。 private const int WMS= 0x007B; protected override void WndProc(ref Message m) { if (m.Msg == WMS)原创 2011-07-20 09:43:52 · 2044 阅读 · 0 评论 -
C#获取磁盘空间信息的几个方法
今天本来想找一个在磁盘拷贝的过程中快速获取磁盘大小信息的方法,可惜这几个方法都不给力,拷贝中获取信息依然很慢。纠结。1、C#DriveInfo类获取DriveInfo driveinfo = new DriveInfo(@"C:\");driveinfo.AvailableFreeSpace;driveinfo.TotalSize;2、调用系统DLL方法 [D原创 2012-03-23 16:29:07 · 5951 阅读 · 0 评论 -
WIN764位 ACCESS引擎
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=7554f536-8c28-4598-9b72-ef94e038c891 今天解决一个用户问题是发现,这个东东还是可以用的,25.2M,access驱动是 Microsoft.ACE.OLEDB.12.0。安装后可以打开,而且不提示 “未在本地计算机上注册”。原创 2011-08-01 19:28:42 · 4305 阅读 · 0 评论 -
一些笔记
1、 datetime类型,初始化时,参数必须大于1。2、 写注册表项,OpenSubKey必须带true。3、 启动exe:ProcessStartInfo和WinExec("c:\\windows\\system32\\eudcedit.exe",2);//[DllImport("kernel32.dll")]//public static extern int WinE原创 2011-07-04 08:49:30 · 1343 阅读 · 0 评论 -
c#中的get和set
public string Url { get { return url; } private set { url = value; } }外部只读,内部可读写。转载 2011-07-19 09:34:44 · 1383 阅读 · 0 评论 -
(转载)强制浏览器显示新网页
最近写了个软件叫WebBrowser,目的用于,网页的自动操作处理,就是说,所有你在网页上面的操作,都可以录到一个脚本中,然后可以回放这个操作过程。。我是说任何过程。 程序是用C#写的,其中遇到了一个难题,对于网页,我是用C#内置的WebBrowser控件控制,但是这个控件有个问题,就是对于一些网页上的链接,如果你在IE打开的时候,它是在新窗口打开的话,这时候,你在WebBrowser点原创 2011-07-21 15:54:46 · 1708 阅读 · 0 评论 -
浏览器加载是否完毕
最近写了个软件叫WebAutoScript,目的用于,网页的自动操作处理,就是说,所有你在网页上面的操作,都可以录到一个脚本中,然后可以回放这个操作过程。。我是说任何过程。程序是用C#写的,其中遇到了一个难题,对于网页,我是用C#内置的WebBrowser控件控制,但是这个控件有个问题,就是不能准确判断网页什么时候最终装载完毕,如果这个不能判断的话,我根本不可以判断什么时候执行下一个动作,因为原创 2011-07-21 15:56:03 · 2506 阅读 · 1 评论 -
c#中的事件和委托
关于事件和委托一开始我也搞不明白到底咋回事。我在平常使用到的有:1、delegate a、这据说是委托,当用线程改变主界面的控件或什么的,就要用到这个,首先定义一个委托,加到主界面的方法中delegate void Delegate(类型 参数);private void main(类型 参数){ if (!this.InvokeRequired){原创 2011-07-26 15:44:09 · 1915 阅读 · 0 评论 -
使用AspNetPager控件分页
页面后台写法 protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { BindData(); } } protected void AspNetPager1_PageChanged(object sender, EventArgs e) { BindData(); } p原创 2011-09-08 14:28:58 · 2900 阅读 · 0 评论 -
c#读写文件:概述
1、如何读写 读取文件在编程中经常用到,读写配置文件或者利用文件存取数据等。常用的读取过程如下: (1)声明读写流 FileStream fs = null;连接文件 BinaryWriter bw = null;写的流 BinaryReader br = null;读的流 fs = new FileStream(文件路径, FileMode,原创 2011-11-08 15:28:37 · 4141 阅读 · 0 评论 -
C#中进程间的通信:管道
程序中有两个进程,并且一个进程需要和另一个进程进行通信,那么可以使用管道,所谓的C/S模式也和这个差不多。 分为两端服务和客户端,下面简单说一下管道通信。两个类Server和Client,都包含如下方法:监听,接收,发送。如下类:Server类 public class Server { [DllImport("kernel32.dll",原创 2011-12-20 17:21:49 · 5083 阅读 · 2 评论 -
C#安装包制作:NSIS安装包
——摘录自 轻狂编程资源网 NSIS 是“Nullsoft 脚本安装系统”(Nullsoft Scriptable Installation System)的缩写,它是一个免费的安装、卸载系统。它的特点:脚本简洁高效;系统开销小;当然进行安装、卸载、设置系统设置、解压文件等等更不在话下,几乎可以做所有的事情。 以下是32位下NSIS制作安装包最基本的操作原创 2012-01-03 09:18:28 · 8220 阅读 · 3 评论 -
(转载的)C#using的用法
using一般我知道的就两种用法,using命名空间和using定义一个范围。下面这篇文章除了上述用法,还可以使用using+别名来引用命名空间。 在net中有一个至关重要的关键字,那就是usingusing一般有着以下几种用法:1、直接引入命名空间a、using System ,这个是最常用的,就是using+命名空间,这样就可以直接使用命名空间中的类型,而免去了使用详细的命原创 2012-01-01 19:00:28 · 1725 阅读 · 0 评论 -
(转载)C#richTextBox中的内容换行
要让一个TextBox显示多行文本就得把它的Multiline属性设置为true,可是如果你是要把TextBox的Text属性设置多行文本时可能会遇到点麻烦,也许你会想到直接加一个换行符"\n":TextBox1.Text = "First Line\nSecond Line\nThird Line";可是实际运行的时候你却发现它始终不会换行,显示的结果为"First LineSeco原创 2012-02-17 19:21:40 · 29105 阅读 · 4 评论 -
C#实现录屏功能
参考了一些方法,实现了录屏功能。环境:windows xp用到的dll为:Interop.WMEncoderLib.dll,下载地址:http://download.csdn.net/detail/yysyangyangyangshan/4056611。如果有条件再安装上WMEncoder_cn.exe,下载地址:http://download.csdn.net/detail/yysyan原创 2012-02-10 19:25:37 · 14885 阅读 · 2 评论 -
程序是设计出来的
软件程序开发,也许人们的印象是一帮程序员对着电脑狂敲代码。但是事实上一套好的程序仅仅是敲代码敲出来的么。答案是,敲代码只是程序开发的一部分,甚至不是最主要的部分。 那么什么才是最重要的?是程序设计。所谓程序设计,是指开始敲代码之前的所有准备工作都是称之为程序设计部分,程序设计直接关系到你敲代码敲的是否顺手,以及敲代码时间的长短。设计是智力劳动而敲代码只是体力劳动!如果按照时间划分的话,程原创 2012-02-27 17:41:53 · 1746 阅读 · 1 评论 -
Dictionary排序
有时候由于某些要求会对Dictionary排序,一般有两种方法。1、使用SortedDictionary。这种自动会对保存的值进行排序。 static void Main(string[] args) { SortedDictionary testDictioary = new SortedDictionary(); int flag = 0;原创 2012-03-05 16:43:37 · 20473 阅读 · 0 评论 -
软件开发中团队的重要性
今天的社会无论什么行业想要做出一番成就,靠一个人打拼天下已经不现实了。所谓人多力量大,三个臭皮匠顶个诸葛亮... ...同样,软件开发也是一样。不可否认,有相当部分牛人确实可以独自扛起大梁,独自完成一项任务。但是,一个人的精力毕竟有限,很难面面俱到,而且软件开发有许多突发事件和难以预料的情况发生。对需求的理解稍微偏差就可能导致项目的失败。因此团队显得很重要,社会分工可以促进生产力的发展,同样,原创 2012-03-06 21:41:14 · 8368 阅读 · 0 评论 -
遍历查找指定文件
private Regex nameRx = new Regex(@"([\w\W]*?).(doc|docx)",RegexOptions.IgnoreCase);private void FildDoc(string path){ DirectoryInfo directory = new DirectoryInfo(path); FileSystemInfo[] fi原创 2011-08-15 14:50:43 · 1615 阅读 · 0 评论 -
ASP.NET中设置CheckBox和RadioButton的默认值不可改变
我们制作表单的时候都会用到多选CheckBox和单选RadioButton按钮。有的时候我们希望它们的默认值不可以让用户改变。最普遍的方法就是加上 enable=false。但这样就有了个问题,原本定义好的样式不见了!CheckBox变的很难看。如何让CheckBox默认值不变,又不丢失原来的样式呢?很简单,只要在每个CheckBox上添加属性onclick="this.check转载 2011-09-01 11:40:18 · 4692 阅读 · 1 评论 -
textarea焦点的用法
1.文本框显示默认文字:白鸽男孩 白鸽男孩 2.鼠标点击文本框,默认文字消失:白鸽男孩 白鸽男孩 3.鼠标移至文本框,默认文字消失:白鸽男孩 白鸽男孩 4.鼠标点击文本框,默认文字消失,点击文本框外任意区域,默认文字又重现:白鸽男孩 白鸽男孩 5.鼠标移至文本框,默认文字消失,鼠标移出文本框,默认文字又重现:白鸽男孩原创 2011-09-09 20:34:25 · 12133 阅读 · 0 评论 -
关于一个Panel上鼠标不及时响应MouseLeave事件
今天做一个鼠标离开panel后,该panel消失的功能,具体就是,使用panel.MouseLeave事件。但是调试中发现这个事件执行的并不及时,有时鼠标都离开了,panel依然没有消失。经过查资料,查MSDN,原来是因为在这个panel上写了别的控件,panel露出的部分很少,导致事件响应不了。针对该问题,又对这个panel上的控件添加事件MouseLeave,然后判断鼠标的位置是否在pan原创 2011-09-21 16:16:48 · 4294 阅读 · 1 评论 -
C#窗口拦截键盘事件
有时候需要拦截键盘的事件使程序按照设计者的要求执行。 protected override void WndProc(ref Message m) { const int WM_HOTKEY = 0x0312; // 热键消息 if (m.Msg == WM_HOTKEY) {原创 2011-09-30 08:08:23 · 5127 阅读 · 1 评论 -
.NET中的DRY和SHY原则
1、定义DRY原则DRY——Don't Repeat Yourself。是指在一个项目工程中的东西最好是唯一的,所有东西,包括类,变量,常量,相同的方法,等等。SHY原则Shy—害羞,是指各个模块不要把只属于自己的东西公开,从而减少依赖关系,假如出现bug,那么让bug只影响该某块,而不要牵扯整个工程。2、联系 两个原则都为了增强程序可维护性。但是在某种程度上两个是不能兼原创 2011-11-03 11:35:25 · 1715 阅读 · 0 评论 -
.net framework 2.0 安装包下载url
有时候.NET程序安装时提示“初始化失败” 之类的,一般就是没.net环境。今天有用户的程序出问题了,网上下载了好几个.net 2.0的安装包,安装都不行。于是找到了这个网址:http://www.microsoft.com/downloads/zh-cn/details.aspx?familyid=5B2C0358-915B-4EB5-9B1D-10E506DA9D0F&displaylang=原创 2011-11-21 16:27:53 · 4283 阅读 · 0 评论 -
初识DesignMode
写过自定义控件的 C# Computer Programer大概都用过DesignMode。对于刚刚接触这一块儿的也许不太熟悉这个。有必要做一下简单介绍。 在MSDN上可以看到, Component.DesignMode 属性,获取一个值,用以指示 Component 当前是否处于设计模式。 自定义控件能够以两种模式执行:设计模式和运行模式。运行模式是指控件在容器(窗原创 2011-12-15 17:22:54 · 8710 阅读 · 2 评论 -
C#中设置开机自动运行和关机
让软件开机自动运行或者设置自动关机,大部分软件都有这种功能。如何实现呢,其实很简单,开机运行,只需要设置注册表就可以了,关机则调用CMD命令:shutdown -s -t,如下:开机自动运行: /// /// 设置开机运行 /// public void AutoRun() {原创 2011-12-11 19:07:30 · 3399 阅读 · 0 评论 -
C#中获取精确时间
程序中获取精确的时间,有时是非常必要的。常用的是,在测试程序的性能时,需要使用到精确的时间计时。或者其他情况要用到精确的时间。这就要用到一个函数QueryPerformanceCounter()。用法是从第一次调用QueryPerformanceCounter(),过一段时间后再次调用该函数结束的.两者之差除以QueryPerformanceFrequency()的频率就是开始到结束之间的秒数。由原创 2011-12-10 21:21:13 · 4733 阅读 · 1 评论 -
关于C#程序不安装.net Framework安装包的问题
c#程序是通过安装.net安装包才能运行的,因此有时候很不方便,必须要用户安装一个.net安装包,虽然系统会带有这个,但是还有相当的电脑是不装这个的。这样我们怎么才能避免这个问题呢。查了很多资料和网上的同行们的说法。总的来说也只有两种方式:借用其它工具和缩减.net的dll。前者是为了达到貌似的跨平台,后者是为了减少.net环境的大小来避免不方便的问题。下面以.net framework 2.0环原创 2011-12-02 17:55:28 · 6110 阅读 · 0 评论 -
HTML颜色代码表
#000000 #2F0000 #600030 #460046 #28004D #272727 #4D0000 #820041 #5E005E #3A006F #3C3C3C #600000 #9F0050 #750075 #4B0091 #4F4F4F原创 2012-01-05 10:06:45 · 2486 阅读 · 0 评论 -
NSIS x64 位系统下安装
——转载自 百度空间 NSIS生成的安装程序都是32位的应用程序,所以在x64下运行时,所安装的文件会被自动转向,如安装到C:\Windows\System32目录下的文件会被安装到C:\Windows\SysWOW64目录下。这对于有些软件是不方便的。NSIS已经有现成的头文件 x64.nsh (X:\NSIS\Include\x64.nsh) 供大家使用首先需要引用!inclu原创 2012-01-03 09:20:46 · 9296 阅读 · 1 评论 -
C#基础知识回顾
今天在一个网站看到了一篇关于C#基础知识的文章,篇幅很长,浏览了一下,确实是基础知识,虽然顺序凌乱,没有章法,但是对于我们经常写代码的人确实应该尽量多的记住一些基础知识。 掌握牢固的基础知识编程才能得心应手,最基本的东西也应该注重,因为细节决定成败。 引用类型是类型安全的指针,它们的内存是分配在堆(保存指针地址)上的。string、数组、类、接口和委托都是引用类型。强制类型转换原创 2011-12-28 09:40:20 · 3750 阅读 · 2 评论 -
判断磁盘是否是USB连接的一种方法
判断磁盘是否是USB连接的磁盘可以使用C#中的DriveType.Removable属性,但是在实际使用中有时候这个属性经常把NTFS类型的硬盘判断为系统的本地盘。不过还有一种方式来判断是否为USB磁盘,就是使用USBDISK.dll判断,这个网上有下载,不过这个dll只能使用在32位环境下,64位的环境还是要靠DriveType.Removable来判断。使用方法: [Dl原创 2011-12-25 23:34:35 · 3030 阅读 · 0 评论 -
C#中DES加密解密
加密和解密是一门高深和复杂的学科。在程序中有时需要用一些简单的加密和解密,以保证一些关键字符串、值等地安全性。这里就要用到DES加密解密。当然我们不用深究这些加密的原理了,因为如果深究的话估计都得转行研究数学。DES加密解密C#中需要用到这几个类,DESCryptoServiceProvider,CryptoStream。看下面的两组加密解密代码。1、 (1)、对字符串进行原创 2011-12-22 17:20:45 · 36861 阅读 · 3 评论 -
C#鼠标穿透功能
(以下内容是从网上查询的)一、鼠标穿透功能用到的函数。1、GetWindowLong该函数获得有关指定窗口的信息,函数也获得在额外窗口内存中指定偏移位地址的32位度整型值。hWnd:窗口句柄及间接给出的窗口所属的窗口类。 nlndex:指定要获得值的大于等于0的值的偏移量。有效值的范围从0到额外窗口内存空间的字节数一4例如,若指定了12位或多于12位的额外类存储空间,则原创 2012-02-14 19:02:41 · 5811 阅读 · 1 评论 -
磁盘FAT型转NTFS
对于固定磁盘来说,Microsoft Windows XP 支持下列三种文件系统: FAT16 FAT32 NTFS由于 NTFS 具有性能高和安全可靠的优点,因此,我们建议您在 Windows XP 中使用 NTFS。本文介绍如何将 FAT16 或 FAT32 卷转换为 NTFS。要求在将 FAT 或 FAT32 卷转换为 NTFS 之前,应注意下列限制和要求:原创 2012-01-15 21:27:49 · 1568 阅读 · 0 评论 -
C#托盘窗口显示
托盘显示许多软件都有这个功能,在C#中如何实现呢,下面的方法可以实现托盘显示,不过可能有些复杂。 首先,需要在工具栏拖入NotifyIcon,如图1的那个控件。图一: 然后,设置NotifyIcon的属性,加图标什么的。 最后,最主要的,就是NotifyIcon点击事件,要实现点击托盘图标隐藏窗口,再点击显示窗口,还有右键托盘能显示菜单等。 下面着重介绍一下这一部分的实现。原创 2012-01-13 16:49:57 · 4677 阅读 · 0 评论