
C#
文章平均质量分 92
hxp42
这个作者很懒,什么都没留下…
展开
-
C# 中使用 Excel
<br />using System;<br />using System.Collections.Generic;<br />using System.Text;<br />using System.Reflection;<br />using System.Runtime.InteropServices;<br />using Microsoft.Office.Interop.Excel;<br />using ExcelApplication = Microsoft.Office.Interop.Ex原创 2010-08-03 15:50:00 · 473 阅读 · 0 评论 -
线程02:多线程之线程同步中的信号量AutoResetEvent和ManualResetEvent
<br />本章概要: <br />1:终止状态和非终止状态 <br />2:AutoResetEvent和ManualResetEvent的区别 <br />3:WaitHandle.WaitOne()等 <br /> <br />1:终止状态和非终止状态 <br /> 首先说说线程的终止状态和非终止状态。AutoResetEvent和ManualResetEvent的构造函数中,都有bool变量来指明线程的终止状态和非终止状态。true表示终止状态,false表示非终止状态。看代码片段1: <b转载 2011-02-10 14:58:00 · 377 阅读 · 0 评论 -
多线程之线程同步中的信号量AutoResetEvent和ManualResetEvent
<br />本章概要: <br />1:终止状态和非终止状态 <br />2:AutoResetEvent和ManualResetEvent的区别 <br />3:WaitHandle.WaitOne()等 <br /> <br />1:终止状态和非终止状态 <br /> 首先说说线程的终止状态和非终止状态。AutoResetEvent和ManualResetEvent的构造函数中,都有bool变量来指明线程的终止状态和非终止状态。true表示终止状态,false表示非终止状态。看代码片段1: <b转载 2011-02-10 16:06:00 · 516 阅读 · 0 评论 -
I/O操作
<br />本章概要: <br />1:基本文件I/O <br /> 1.1:用于文件 I/O 的类 <br /> 1.2:用于从流读取和写入流的类 <br /> 1.3:通用 I/O 流类 <br />2:通用I/O任务 <br />3:独立存储 <br /><br /> 3.1:为什么要使用独立存储<br /> 3.2:使用独立存储 <br /> <br /> 以下的区别有助于澄清文件和流的差异。文件是一些具有永久存储及特定顺序的字节组成的一个有序的、具有名称的集合。因此转载 2011-02-10 16:19:00 · 2116 阅读 · 0 评论 -
Trace、Debug和TraceSource的使用以及日志设计
<br />本章概要: <br />1:Trace 和 Debug区别 <br />2:什么是Listeners<br />3:跟踪开关 <br /> 3.1:使用BooleanSwitch开关<br /> 3.2:使用TraceSwitch开关<br />4:使用TraceSource代替Trace和<br /> <br />5:设计一个日志系统<br />6:关于EventLog<br /> <br /> .NET Framework 命名空间 System.Diagnosti转载 2011-02-10 16:24:00 · 6010 阅读 · 0 评论 -
参数和扩展方法
<br />本章概要:<br /> 1:实参和形参;<br /> 2:命名实参和可选实参; <br /> 3:扩展方法;<br /> 4:C#参数的四个类型<br /> 4.1:值类型 <br /> 4.2:引用类型 <br /> 4.3:输出类型 <br /> 4.4:数组型参数<br /> <br />1:实参和形参<br /> 形参:全称为"形式参数"是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传如的参数. <br />转载 2011-02-10 11:38:00 · 853 阅读 · 0 评论 -
C#创建数字证书并导出为pfx,并使用pfx进行非对称加解密
<br />本文源程序下载:http://download.youkuaiyun.com/source/2444494<br /> 我的项目当中,考虑到安全性,需要为每个客户端分发一个数字证书,同时使用数字证书中的公私钥来进行数据的加解密。为了完成这个安全模块,特写了如下一个DEMO程序,该DEMO程序包含的功能有: <br />1:调用.NET2.0的MAKECERT创建含有私钥的数字证书,并存储到个人证书区; <br />2:将该证书导出为pfx文件,并为其指定一个用来打开pfx文件的password; <转载 2011-02-10 16:26:00 · 980 阅读 · 0 评论 -
用c#创建支持多语言的WinForm应用程序
<br />实现多语言的方法可能有使用资源文件,或者配置xml两种方法吧。<br />没时间研究过多,学习了一下使用资源文件的方法,成功了。<br /><br />在.net2.0 中,m$ 为我们提供了一种简单方便的方法, 使用资源文件<br /><br />1.新建一个 Winform 应用程序, 新建一 Form ,名为 Form1,添加一个菜单一个按钮。如图<br /><br />2. 设置 Form1 的 Localizable 属性为 true, 设置该属性后,.net 将根据不同的语言,为应用转载 2011-02-10 16:34:00 · 553 阅读 · 0 评论 -
本地化或多语言支持
<br />本章概要: <br />1:本地化解释 <br />2:多语言支持 <br />3:疑问的提出“非窗体,如控件的多语言支持” <br /> 1:本地化解释<br /> 本地化对我个人来说,更多的用处是开发多语言版本。更多的本地化内容,参考http://msdn.microsoft.com/zh-cn/library/h6270d0z.aspx。 <br /> 2:多语言支持<br /> 多语言支持有很多种方法来做到,很主流的一种做法是提取应用程序中的全部语言,配置在XML文件转载 2011-02-10 16:37:00 · 1179 阅读 · 0 评论 -
C#图片处理基本应用(裁剪,缩放,清晰度,水印)
<br />前言<br />需求源自项目中的一些应用,比如相册功能,通常用户上传相片后我们都会针对该相片再生成一张缩略图,用于其它页面上的列表显示。随便看一下,大部分网站基本都是将原图等比缩放来生成缩略图。但完美主义者会发现一些问题,比如显示排版时想让相片缩略图列表非常统一、整齐、和美观,比如要求每张缩略图大小固定为120 x 90且不拉伸变形怎么办?再比如用户头像如何让缩略图比原图更清晰?或是如何在上传的图片下加一个半透明的LOGO水印?<br />OK,本文根据自己的项目代码描述以上问题的解决方案,全部转载 2011-03-02 18:00:00 · 516 阅读 · 0 评论 -
终于解决了一个Win7 下 VS 编译的问题,困扰了我好几个月
<br />用 Win7 一年多了,一直在这个环境下编程,其他都挺好,就是有个问题非常恶心,在VS下编译经常出现进程正在使用,无法覆盖的错误,这个问题我记得博问中以前也有其他人遇到过,也没有解决掉。此问题困扰了我一年,期间我查了很多中英文资料都没有得到理想的答案。今天实在忍无可忍,又去狗了一下,可能关键字输入不一样吧,这次终于狗出来了,困扰一年的问题终于解决了。写此文希望能帮助和我一样正在为此问题抓狂的同仁。<br /> 这个问题其实并不是VS的问题,只是因为我用VS需要经常编译并生成exe文件,转载 2011-02-12 10:55:00 · 488 阅读 · 0 评论 -
Visual Studio 2008(c#)开发ActiveX控件及制作CAB包总结(4)
<br />这一节将测试ActiveX控件在新版操作系统上运行的问题,并提出解决的办法。主要是ActiveX程序兼容性和CAB文件的安装问题。我在Vitual PC上安装了Windows 7,并且使用IE8浏览器。<br />1、测试环境:Windows 7 + IE8<br />2、修改之前,直接访问页面看看,发现出错了:<br /><br />出错行:document.HelloBossma.SetTime(vYear + “-” + vMon + “-” + vDay + ” ” + vHour +转载 2011-05-27 15:57:00 · 1497 阅读 · 0 评论 -
极限挑战—C#100万条数据导入SQL SERVER数据库仅用4秒
<br />实际工作中有时候需要把大量数据导入数据库,然后用于各种程序计算,本实验将使用5中方法完成这个过程,并详细记录各种方法所耗费的时间。<br /> 本实验中所用到工具为VS2008和SQL SERVER 2000、SQL SERVER 2008,分别使用5中方法将100万条数据导入SQL 2000与SQL 2008中,实验环境是DELL 2850双2.0GCPU,2G内存的服务器。感兴趣的朋友可以下载源代码自己验证一下所用时间。<br /> 还要有一点需要进行说明,本实验中执行SQL语句转载 2011-05-27 14:51:00 · 539 阅读 · 0 评论 -
Visual Studio 2008(c#)开发ActiveX控件及制作CAB包总结(1)
<br />1、开发及测试环境:<br />(1)开发环境:<br /> Visual Studio 2008 SP1<br /> cabsdk(下载地址:http://support.microsoft.com/kb/310618)<br />(2)测试环境:<br /> Windows Server 2003 R2 SP2<br /> IE6<br />2、创建项目<br /><br />我这里创建了三个项目:<br />(1)H转载 2011-05-27 15:50:00 · 1583 阅读 · 0 评论 -
Visual Studio 2008(c#)开发ActiveX控件及制作CAB包总结(3)
<br />这篇文章将介绍ActiveX版本更新的方法,参考了我最初文章中一位朋友的回复中的方法。通过设置注册表中的的ActiveX的版本(InstalledVersion)来维护更新。<br />1、更新Activex的版本:<br />(1)在ActiveX项目上点右键,属性,应用程序,程序集信息,最初的版本是1.0.0.0,修改为1.0.1.0<br /><br />(2)修改控件,以区别1.0.0.0版本,修改V1.0.0为V1.0.1<br /><br />(3)然后重新生成。<br />2、修改转载 2011-05-27 15:53:00 · 1159 阅读 · 0 评论 -
C#中机密文本的保存方案
<br /> <br />托管代码中的字符串是一类特殊的对象,它不可被改变的,每次使用 System.String 类中的方法之一或进行运算时(如赋值、拼接等)时,都要在内存中创建一个新的字符串对象,也就是为该新对象分配新的空间。这就带来两个问题:<br />1:原来的字符串是不是还在内存当中?<br />2:如果在内存当中,那么机密数据(如密码)该如何保存才足够安全?<br /> <br />先来看第一个问题:<br /> 代码publicclass Program<br />{<br />staticv转载 2011-05-30 15:42:00 · 451 阅读 · 0 评论 -
极限挑战—C#+ODP 100万条数据导入Oracle数据库仅用不到1秒
<br />.Net程序中可以通过ODP调用特性,对Oracle数据库进行操作,今天来讲一下数据批量插入的功能,所用技术不高不深,相信很多朋友都接触过,小弟班门弄斧了,呵呵。这篇文章是上篇文章的续集,因为上一次试验的征集结果没有突破4秒的方法,所以这次继续挑战与挖掘新方法,虽然是Oracle,但仍具有一定收藏意义。<br /> 上一次文章中提及的试验: <br /> 极限挑战—C#100万条数据导入SQL SERVER数据库仅用4秒 (附源码)<br /> http://www.cnblo转载 2011-05-27 15:08:00 · 747 阅读 · 0 评论 -
C#开发ActiveX控件及制作CAB包
<br />一个项目要用到ActiveX控件,参照网上众多的例子,ActiveX控件倒是很容易就搞出来了;<br />然后做了一个【安装项目】,倒是可以使用,只不过需要在客户端手动点击安装,下一步,下一步…觉得不是很爽;<br />又试了试【CAB项目】,好像没人用VS2008来做,费了点功夫,终于找到解决办法。<br />特将此经验与大家分享。<br />开发工具:Visual Studio 2008<br />.NET版本:2.0<br />开发语言:C#<br />一、编写ActiveX控件<br /转载 2011-05-27 15:41:00 · 491 阅读 · 0 评论 -
C#特性Attribute的实际应用之:为应用程序提供多个版本
基于如下的几个理由,需要为应用程序提供多个版本: 1:应用程序有体验版和完整功能版; 2:应用程序测试过程中需要完成一些自动化的操作; 1:提供体验版 关于第一点,所谓体验版也就是完整版的一个缩小版。即出于某种理由,不对用户开放应用程序的全部功能。 假设我的应用程序共有两类功能。第一类功能属于单机版,而完整版还提供在线功能。那么,在功能上,我需要定制两个属性"ONLINE"和"OFFLINE"。在体验版中,我只开放"OFFLINE"功能。 要实现此目的,我不想提供两套应用程序,而是想通过最小设置,就能为转载 2011-02-10 11:18:00 · 556 阅读 · 0 评论 -
母版页
<br />本文摘要: <br />1:以编程方式使用 ASP.NET 母版页 <br />1.1:访问母版页上的成员 <br />1.2:获取母版页上的控件的值 <br />2:动态地附加母版页 <br />3:母版页基类及动态更换母版页 <br /> <br />母版页实际由两部分组成,即母版页本身与一个或多个内容页。<br />母版页可以嵌套,让一个母版页引用另外的页作为其母版页。利用嵌套的母版页可以创建组件化的母版页。例如,大型站点可能包含一个用于定义站点外观的总体母版页。然后,不同的站点内容合作伙转载 2011-02-10 16:44:00 · 896 阅读 · 0 评论 -
FRAMEWORK安全性之代码访问安全和角色安全
<br />本章概要: <br />1:FRAMEWORK安全性中的几个概念 <br /> 1.1:安全权限 <br /> 1.2:类型安全和安全性 <br /> 1.3:安全策略 <br /> 1.4:身份验证 <br />2:代码访问安全之声明式安全性 <br />3:代码访问安全之强制安全性<br />4:代码访问安全之请求权限 <br /> 4.1:请求访问非托管代码的权限 <br /> 4.2:通过使用 RequestMinimum 标志请求最小权限<br /> 4.3转载 2011-02-10 16:38:00 · 737 阅读 · 0 评论 -
从C#程序中调用非受管DLLs
<br />从所周知,.NET已经渐渐成为一种技术时尚,那么C#很自然也成为一种编程时尚。如何利用浩如烟海的Win32 API以及以前所编写的 Win32 代码已经成为越来越多的C#程序员所关注的问题。本文将介绍如何从C#代码中调用非受管DLLs。如果某个函数是一个带有串类型(char*)输出参数的Win32 API 或者是DLL输出函数,那么从C#中如何调用它呢?对于输入参数的情形问题到不大,但如何获取从参数中返回的串呢?此外,如何调用有结构(struct)和回调(callback)作为参数的函数,如Ge转载 2010-09-25 15:25:00 · 357 阅读 · 0 评论 -
C# 数字格式化输出
<br />int a = 12345678; <br />//格式为sring输出 <br />Label1.Text = string.Format("asdfadsf{0}adsfasdf",a); <br />Label2.Text = "asdfadsf"+a.ToString()+"adsfasdf"; <br />Label1.Text = string.Format("asdfadsf{0:C}adsfasdf",a);//asdfadsf¥1,234.00adsfasdf <br />La转载 2010-09-25 15:28:00 · 284 阅读 · 0 评论 -
Implementing the Singleton Pattern in C#
<br />The singleton pattern is one of the best-known patterns in software engineering. Essentially, a singleton is a class which only allows a single instance of itself to be created, and usually gives simple access to that instance. Most commonly, singlet转载 2010-09-25 15:38:00 · 294 阅读 · 0 评论 -
.net 控件开发常见的特性总结
<br />在.net开发中常常需要使用一些[]里面的特性描述,我发现对常用的几个知道大概的意思,但是却不甚清楚到底有多少个特性,都如何使用。所以今天查了下msdn,把他们一一总结下来。<br />这些特性(属性)在System.ComponentModel下面,凡是带有Attribute结尾的的类都是可以作为方括号里面使用的。我将它们一一摘录下来,并且写上了自己的理解。<br />AttributeUsageAttribute<br />用法:<br />view plaincopy to clipboa转载 2010-10-12 17:52:00 · 515 阅读 · 0 评论 -
C#里使用CopyMemory
<br />Socket接收到的byte []要转换成自定义的struct / 自定义Struct转换成byte []都相当麻烦<br />用循环去转换太浪费时间了……于是想到用CopyMemory,Google一圈终于搞定<br />下面的代码是在Snippet Compiler里编译通过的<br />C#代码<br />#region Imports <br />using System; <br />using System.IO; <br />using System.Net;转载 2010-10-14 15:58:00 · 6565 阅读 · 1 评论 -
判断系统类型
<br />过 Environment.OSVersion.Platform,Environment.OSVersion.Version.Major,Environment.OSVersion.Version.Minor联合进行判断,具体内容见下表:<br /><br /> <br /> <br /> <br /><br /> <br />PlatformID<br />Major<br />Minor<br />Win95<br />Win32Windows<br />4<br />0<br />Win9转载 2010-10-14 16:16:00 · 381 阅读 · 0 评论 -
深入探讨如何在 C# 中使用 Win32 和其他现有库
<br />C# 用户经常提出两个问题:“我为什么要另外编写代码来使用内置于 Windows 中的功能?在框架中为什么没有相应的内容可以为我完成这一任务?”当框架小组构建他们的 .NET 部分时,他们评估了为使 .NET 程序员可以使用 Win32 而需要完成的工作,结果发现 Win32 API 集非常庞大。他们没有足够的资源为所有 Win32 API 编写托管接口、加以测试并编写文档,因此只能优先处理最重要的部分。许多常用操作都有托管接口,但是还有许多完整的 Win32 部分没有托管接口。 <br />转载 2010-10-14 16:00:00 · 272 阅读 · 0 评论 -
如何获取子进程的输出
<br />常看到论坛中有人问到当用Process组件启动新的进程后,如何获取它的输出的问题。采取将子进程的输出定向到一个临时文件中,当然也可以解决问题。但是这样每次父进程从临时文件中获取信息后,还要删除该临时文件,毕竟比较麻烦。其实,Process提供了几个属性可以获取输出。在.net框架sdk的帮助文档里面就有这方面的例子,但是对于如何同时获取错误输出和标准输出方面没有给出具体代码,本文将给出实例并对管道的特性作一些说明。<br />一、获取子进程标准输出和错误输出的的方法:<br />我们写一个小程序转载 2010-10-14 16:02:00 · 978 阅读 · 0 评论 -
得到给定扩展名的文件图标
<br /> 地址:http://www.flawlesscode.com/post/2008/02/Getting-the-icon-for-a-given-file-extension.aspx<br />代码下载:http://www.flawlesscode.com/file.axd?file=IconUtils.zip<br />主要代码:<br /> <br />using System;using System.Drawing;using System.Runtime.InteropS转载 2010-10-15 13:57:00 · 401 阅读 · 0 评论 -
比较和排序(IComparable和IComparer以及它们的泛型实现)
<br />本文摘要: <br />1:比较和排序的概念;<br />2:IComparable和IComparer;<br />3:IComparable和IComparer的泛型实现IComparable<T>和IComparer<T>;<br /> <br />1:比较和排序的概念<br /> 比较:两个实体类之间按>,=,<进行比较。<br /> 排序:在集合类中,对集合类中的实体进行排序。排序基于的算法基于实体类提供的比较函数。<br /> 基本型别都提供了默认的比较算法,如st转载 2011-02-10 10:30:00 · 334 阅读 · 0 评论 -
Efficient C#:为什么要把泛型作为返回值
最近做一题关于泛型返回值的题,结果发现:1:很多人做错误了;2:很多人疑问,泛型作为返回值有什么意义;题目如下:“编写一个函数,要求输入的参数和输出的结果都是泛型。” (PS:评论中有人指出,题目本身有问题,更合适的描述是:编写一个函数,要求输入参数和返回值的类型都是泛型类型参数)典型的错误回答之一:public List Function(U parameter) { returnnew List(); }典型的错误回答之二:void Get转载 2011-02-10 11:34:00 · 1677 阅读 · 1 评论 -
集合类
<br />本章概要:<br />1:为什么要使用泛型集合<br />2:集合的线程安全<br /> 2.1:Syncronized静态方法和SyncRoot实例属性的用法<br />3:选择集合类<br />4:位集合<br /> 1:为什么要使用泛型集合<br /> 针对 .NET Framework 的 2.0 版和更高版本的应用程序应当使用 System.Collections.Generic 命名空间中的泛型集合类,与对应的非泛型类相比,这些类提供了更高的类型安全性和效率。为什么这么转载 2011-02-10 11:46:00 · 795 阅读 · 0 评论 -
序列化
<br />本章概要: <br />1:为什么需要序列化<br />2:序列化的几种形式<br />3:关于XML序列化,多说一点<br /> 3.1:IDeserializationCallback 接口<br />4:JSON是什么 <br /> 4.1提供一段有用的JSON代码 <br /> 1:为什么需要序列化<br /> 序列化是将对象转换为字节流以将其保存在内存、数据库或文件中的过程。其主要目的是保存对象的状态,以便可以在需要时重新创建对象。相反的过程称为反序列化。<br /转载 2011-02-10 14:35:00 · 568 阅读 · 0 评论 -
协变与逆变
<br />本章概要: <br />1:协变与逆变概念<br />2:协变<br />3:逆变<br />4:注意事项<br />5:接口变体语法 <br /> <br />1:逆变与协变概念<br /> “协变”是指能够使用与原始指定的派生类型相比,派生程度更大的类型。<br /> “逆变”则是指能够使用派生程度更小的类型。<br /> 如果泛型接口或委托的泛型参数声明为协变或逆变,则将该泛型接口或委托称为“变体”。 <br /> <br />2:协变<br /> 查看下面转载 2011-02-10 14:41:00 · 982 阅读 · 0 评论 -
线程01:多线程之线程启动、参数、返回值
<br />本章概要: <br />1:如何新起线程 <br />2:Thread传参数及取得返回值 <br />3:IsBackground <br />4:异步调用中的参数和返回值 <br /><br /> 1:如何新起线程 <br /> <br /> 新起一个线程的方法,可以使用Thread,BackgroundWorker ,ThreadPool,控件.BeginInvoke,委托.BeginInvoke,Timer。<br /> 创建多线程处理应用程序的最可靠方法是使用 Backgr转载 2011-02-10 14:57:00 · 677 阅读 · 0 评论 -
善用Visual Studio
<br />1:调试的四个窗口<br />2:加快编码速度<br />3:加快编码速度<br />4:使用第三方工具丰富VS<br />5:VS2010中的工具<br />6:学会调试<br /> <br />1:调试的四个窗口<br /> 立即窗口:提供运行时动态增加代码,或者动态改变当前代码变量的窗口。<br /> 快速监视窗口:能够快速监视当前代码中的变量。<br /> 调用堆栈窗口:查看当前代码是被其它那个文件的代码所调用。<br /> 线程窗口:查看当前应用程序所启转载 2011-02-10 16:10:00 · 630 阅读 · 0 评论 -
程序集、应用程序配置及App.config和YourSoft.exe.config
<br />本章概要: <br />1:什么是程序集 <br />2:程序集标识属性 <br />3:强名称的程序集 <br />3.1:强名称工作原理 <br />4:配置文件 <br />5:使用 DEVPATH 查找程序集<br />6:指定要使用的运行库版本<br />7:App.config和YourSoft.exe.config<br /> 1:什么是程序集 <br /> 程序集是 .NET Framework 应用程序的构造块;程序集构成了部署、版本控制、重复使用、激活范围控制和安全权转载 2011-02-10 16:22:00 · 2181 阅读 · 0 评论 -
Visual Studio 2008(c#)开发ActiveX控件及制作CAB包总结(2)
上一节介绍了一个ActiveX的例子,后续的文章将针对这个例子进行扩充和说明。这篇文章将介绍C#如何在ActiveX控件中调用javascript的函数,这里参考网上的例子介绍两种方法,虽然代码不一样,但是殊途同归。而且都使用了mshtml。1、方法一(1)在VS项目中添加Com对象引用:Microsoft Html Object Library(mshtml.tlb)(2)ActiveX中公开一个方法,传递window对象到ActiveX中ActiveX中公开一个方法,接受传递进来的参数查看源代码打印?转载 2011-05-27 15:52:00 · 1321 阅读 · 0 评论