摘要: “三层结构”是“外观层”、“商业逻辑层”、“数据库层”假设以这样的结构制作一个留言板,那么应该是: # 留言板页面的外观代码都存放在 .aspx 文件中 # 当用户点击页面上的提交按钮时,先将文本信息传递给一个 LeaveWord 类对象 (LeaveWord 类的定义被封装到“商业逻辑层”) # 之后让这个对象执行 Post() 将留言信息发送到数据库用一个简单的代码就是: textarea id="Content" runat="server"/textarea input type="button" id="Post" runat="server" / // -------- 阅读全文
posted @ 2007-03-24 17:23 leonardleonard 阅读(150) 评论(0) 推荐(0)
摘要: 一个示例: classAppTest { privateExcel.ApplicationClass_x; publicstaticvoidMain0() { AppTesta=newAppTest(); a._x=newExcel.ApplicationClass(); a._x.UserControl=false; for(inti=0;i4;i++) { a.SaveToXls("D:\\test\\"+i+".xls");//本例是在D盘下建立的test文件夹 } a._x.Quit(); System.Runtime.InteropServices.Marshal.Release 阅读全文
posted @ 2007-03-24 17:20 leonardleonard 阅读(540) 评论(0) 推荐(0)
摘要: if(fileupload.PostedFile!=null){ //addto为要添加的属性,aboutfile为文件说明string nam = fileupload.PostedFile.FileName ;//取得文件名(抱括路径)里最后一个"."的索引int i= nam.LastIndexOf(".");//取得文件扩展名string newext =nam.Substring(i);//这里我自动根据日期和文件大小不同为文件命名,确保文件名不重复DateTime now = DateTime.Now; string newname=now.DayOfYear.ToString() 阅读全文
posted @ 2007-03-24 17:19 leonardleonard 阅读(132) 评论(0) 推荐(0)
摘要: 前两年写的东西,现在整理一下发出来!以前公司需要做WebService,并且对WebService的SoapHeader进行加密,所以就写了这么个东东!使用这个类,需要密钥管理!为了保证数据的安全性往往要对数据进行加密,但是加密的缺点之一,就是影响程序的运行效率,所以,当时我的思路是只对用户的登录信息(用户名,密码)进行加密!数据用明文传输,用户信息验证没有通过的情况下, 不进行数据传输。 实际在网络通讯中,使用密钥匙的方式并非无懈可击,如果黑客可以捕捉到用密钥加密的,用户验证信息,然后,做个模拟请求,向提供WebService的服务器发请求,还是可以获得请求数据!所以,我又使用了IP或者域名 阅读全文
posted @ 2007-03-24 17:16 leonardleonard 阅读(193) 评论(0) 推荐(0)
摘要: /* FTPFactory.cs Better view with tab space=4 Written by Jaimon Mathew (jaimonmathew@rediffmail.com) Rolander,Dan (Dan.Rolander@marriott.com) has modified the download method to cope with file name with path information. He also provided the XML comments so that the library provides Intellisense des 阅读全文
posted @ 2007-03-24 17:15 leonardleonard 阅读(130) 评论(0) 推荐(0)
摘要: 类(class)是C#类型中最基础的类型。类是一个数据结构,将状态(字段)和行为(方法和其他函数成员)组合在一个单元中。类提供了用于动态创建类实例的定义,也就是对象(object)。类支持继承(inheritance)和多态(polymorphism),即派生类能够扩展和特殊化基类的机制。 使用类声明可以创建新的类。类声明以一个声明头开始,其组成方式如下:先是指定类的特性和修饰符,后跟类的名字,基类(如果有的话)的名字,以及被该类实现的接口名。声明头后面就是类体了,它由一组包含在大括号({})中的成员声明组成。 下面是一个名为Point的简单类的声明: public class Point { 阅读全文
posted @ 2007-03-24 17:12 leonardleonard 阅读(183) 评论(0) 推荐(0)
摘要: 码输入是一种常用的控件,我记得第一次看见这种控件是在Visual FoxPro中!感觉功能强,不错。现在用C#开发ASP.NET应用程序也需要用到这种输入的控件,便琢磨着自己做一个。但是由于Visual FoxPro中的掩码文本框功能太强了,一时还不敢去做。网上也有一些自制的如:http://www.weste.net/2004/11-25/09162561988.html,但是感觉功能都不很适合。后来在http://www.stedy.com上看到了他们做的掩码文本框,感觉这种方式在Web应用上很适合,就把客户端代码down下来了!(stedy software 作的是产品,要花钱!而且很贵 阅读全文
posted @ 2007-03-24 17:10 leonardleonard 阅读(342) 评论(0) 推荐(0)
摘要: using System; using System.IO; using System.Security.Cryptography; namespace Vavic { /// summary /// Security 的摘要说明。 /// /summary public class Security { const string KEY_64 = "VavicApp"; const string IV_64 = "VavicApp"; //注意了,是8个字符,64位 public Security() { // // TODO: 在此处添加构造函数逻辑 // } public sta 阅读全文
posted @ 2007-03-24 17:08 leonardleonard 阅读(167) 评论(0) 推荐(0)
摘要: 1 在工程中引用Microsoft.VisualBasic.dll 一般此文件在.net框架环境目录中如C:\ WINNT \Microsoft.NET \Framework \v1.1.4322 \Microsoft.VisualBasic.dll。 2 使用方法 Microsoft.VisualBasic.Strings.StrConv( “instr”,Microsoft.VisualBasic.VbStrConv.TraditionalChinese, System.Globalization.CultureInfo.CurrentCulture.LCID); * 该方法的使用可以在m 阅读全文
posted @ 2007-03-24 17:07 leonardleonard 阅读(142) 评论(0) 推荐(0)
摘要: using System; using System.Text; using System.IO; using System.Net; using System.Net.Sockets; using System.Collections; namespace lion_office.Data.Library.MailClass { public class ESmtpMail { private string enter="\r\n"; /// summary /// 设定语言代码,默认设定为GB2312,如不需要可设置为"" /// /summary public string Ch 阅读全文
posted @ 2007-03-24 17:06 leonardleonard 阅读(156) 评论(0) 推荐(0)
摘要: using System; using System.Xml; using System.Text; using System.Net; using System.IO; using System.Collections; using System.Text.RegularExpressions; public class App { public static void Main() { string strCode; ArrayList alLinks; Console.Write("请输入一个网页地址:"); string strURL = Console.ReadLine(); if( 阅读全文
posted @ 2007-03-24 17:04 leonardleonard 阅读(220) 评论(0) 推荐(0)
摘要: using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; using System.Messaging ; using System.Threading ; namespace WinMsmq { /// summary /// Form1 的摘要说明。 /// /summary public class Form1 : System.Windows.Forms.Form 阅读全文
posted @ 2007-03-24 17:03 leonardleonard 阅读(259) 评论(0) 推荐(0)
摘要: GPRS上网,好象很多内容都是要付费的,就只有下载铃声,什么图片的,没劲!最好能用手机看看小说,网络上好象没有免费的WAP小说,办公室的小妹妹也想用手机看小说,看来只有自己做一个了。 都说JAVA是开发WAP的利器,不过WAP需要这个“码”转到那个“码”,真是麻烦,算了,看一下能不能用C#做一个WAP小站。 想来也很简单的,WAP就是用UTF8编码嘛,好象还有什么WML之类的,WML在网上查查资料,就和XML差不多,平时用XML也蛮多的,WML也就简单了,C#直接可以设RESPONSE的编码的,看来有戏了,先写一个“Hello 老婆“吧, //设置ContentType类型 Response. 阅读全文
posted @ 2007-03-24 17:01 leonardleonard 阅读(256) 评论(0) 推荐(0)
摘要: 当我要写一个MD5算法的程序时,发现中英文的语言描述都有一些不确切的地方,某些个细节 讲得不清楚,或者说很费解。最后不得不拿出C语言的源程序来调试,这对于理解算法是很不 利的。于是就总结了一下我摸索到的一些要点。 1.来历 MD5的全称是message-digest algorithm 5(信息-摘要算法,在90年代初由mit laboratory for computer science和rsa data security inc的ronald l. rivest开发出来, 经md2、md3和md4发展而来。http://www.ietf.org/rfc/rfc1321.txt,是一份最权威 阅读全文
posted @ 2007-03-24 17:00 leonardleonard 阅读(188) 评论(0) 推荐(0)
摘要: 第一步:在Visual Studio 2005中编写代码 using System; using System.Data; using System.Data.Sql; using System.Data.SqlServer; using System.Data.SqlTypes; public partial class Triggers { // Enter existing table or view for the target and uncomment the attribute line // [SqlTrigger (Name="myTrigger", Target="Tabl 阅读全文
posted @ 2007-03-24 16:58 leonardleonard 阅读(191) 评论(0) 推荐(0)
摘要: //本周是本年第几周 private int DatePart(System.DateTime dt) { int weeknow = Convert.ToInt32(dt.DayOfWeek);//今天星期几 int daydiff = (-1) * (weeknow+1);//今日与上周末的天数差 int days = System.DateTime.Now.AddDays(daydiff).DayOfYear;//上周末是本年第几天 int weeks = days/7; if(days%7 != 0) { weeks++; } //此时,weeks为上周是本年的第几周 return ( 阅读全文
posted @ 2007-03-24 16:56 leonardleonard 阅读(163) 评论(0) 推荐(0)
摘要: 在写C#程序时,string和byte[]之间的转换比较烦,在移植一些老程序时感觉很不好。我在C#中使用DES和TripleDES时移植一块老代码时也遇到了同样的情况。为了下次不为同样的事情烦恼,就写了下面的帮助类。 主要实现了以下的函数 代码中出现的Sidle是我的网名。 /* * @Author WuErPing * @Version 1.0 * @Date 2004/11/30 * @Description: */ using System; using System.Text; namespace SidleHelper { /// summary /// Summary desc 阅读全文
posted @ 2007-03-24 16:55 leonardleonard 阅读(186) 评论(0) 推荐(0)
摘要: using System; using System.Collections; public class Nevermore60Customer:Customer { public override string GetFunnyString() { return "Nevermore60.Nevenmore!"; } -------------------------------------------------------------------------------- public class Customer { public virtual string GetFunnyStri 阅读全文
posted @ 2007-03-24 16:54 leonardleonard 阅读(191) 评论(0) 推荐(0)
摘要: private void Form1_DragEnter(object sender, System.Windows.Forms.DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.FileDrop)) e.Effect = DragDropEffects.Link; else e.Effect = DragDropEffects.None; } private void Form1_DragDrop(object sender, System.Windows.Forms.DragEventArgs e) { //其中label1. 阅读全文
posted @ 2007-03-24 16:53 leonardleonard 阅读(128) 评论(0) 推荐(0)
摘要: Code List: ------------------------------------------------------------------------- /***************************************************************** ** File Name: frmMain.cs ** Copyright (c) 1999 -2003 ** Creator: FirePhoenix ** Created Date: 2004-11-13 15:24 ** Modifier: ** Modify Date: ** Descr 阅读全文
posted @ 2007-03-24 16:52 leonardleonard 阅读(316) 评论(0) 推荐(0)
摘要: C# 出来也有些日子了,最近由于编程的需要,对 C# 的类型转换做了一些研究,其内容涉及 C# 的装箱/拆箱/别名、数值类型间相互转换、字符的 ASCII 码和 Unicode 码、数值字符串和数值之间的转换、字符串和字符数组/字节数组之间的转换、各种数值类型和字节数组之间的转换、十六进制数输出以及日期型数据的一些转换处理,在这里与大家分享—— 1. 装箱、拆箱还是别名   许多 C#.NET 的书上都有介绍 int - Int32 是一个装箱的过程,反之则是拆箱的过程。许多其它变量类型也是如此,如:short - Int16,long - Int64 等。对于一般的程序员来说,大可 阅读全文
posted @ 2007-03-24 16:51 leonardleonard 阅读(171) 评论(0) 推荐(0)
摘要: 接口把一组公共方法和属性组合起来 ,以封装特定功能的一个集合。通过类可以实现接口,这样类就支持接口所有的属性和方法。 接口只能对方法和属性进行定义,不能实现,只能由支持它的类实现。接口中的成员不能用访问符修饰,如public,private,它的成员默认为public 定义接口比较简 单 public interface IMyinterface { void Dosomething();//方法成员 int MyAttribute//属性成员 { get;//这里只能定义这个属性是否为只读 set; } } 接口和抽象类比较相似,但一个类只能派生于一个抽象类,不过可以实现N个接口。 举个例子 阅读全文
posted @ 2007-03-24 16:49 leonardleonard 阅读(128) 评论(0) 推荐(0)
摘要: 可以引用的COM组件列表,发现里面有一个名为Microsoft CDO For Exchange 2000 Library的COM组件,就是这个,我们可以用它来连接SMTP Server,使用用户名/密码验证发送邮件。 下面是实现的一个例子: Smtp Server使用的Smtp-SRV,登陆用户名是David Euler,发送邮箱是davidEuler@test.com,发送到test@test.com/ 1).资源管理器里面,添加引用(reference),添加Microsoft CDO For Exchange 2000 Library的COM组件; 2).编辑用户界面如上图,依次添加F 阅读全文
posted @ 2007-03-24 16:48 leonardleonard 阅读(610) 评论(0) 推荐(0)
摘要: public class XmlControl { protected string strXmlFile; protected XmlDocument objXmlDoc = new XmlDocument(); public XmlControl(string XmlFile) { // // TODO: 在这里加入建构函式的程序代码 // try { objXmlDoc.Load(XmlFile); } catch (System.Exception ex) { throw ex; } strXmlFile = XmlFile; } public DataView GetData(str 阅读全文
posted @ 2007-03-24 16:47 leonardleonard 阅读(112) 评论(0) 推荐(0)
摘要: 由于Content, Title中可能包含单引号,直接使用sql的insert命令会报错,对此有两种处理方法,一种将单引号替换成两个单引号,第2种方法是使用存储过程。 表myBBS的格式定义如下: CREATE TABLE [dbo].[myBBS] ( [ID] [bigint] IDENTITY (1, 1) NOT NULL , [Title] [char] (160) COLLATE Chinese_PRC_CI_AS NULL , [Author] [char] (20) COLLATE Chinese_PRC_CI_AS NULL , [Date_of_Created] [date 阅读全文
posted @ 2007-03-24 16:45 leonardleonard 阅读(234) 评论(0) 推荐(0)
摘要: 获取文件的版本信息: FileVersionInfo myFileVersionInfo1 = FileVersionInfo.GetVersionInfo("D:\\TEST.DLL"); textBox1.Text="版本号: " + myFileVersionInfo1.FileVersion; 更改文件属性,删除只读文件: 下例欲将E:\test.txt文件拷贝至D:\tmp\test.txt,但D:\tmp\test.txt已经存在。 //File.Copy(sourceFile,destinationFile,true); 用来拷贝文件 //当destinationFile已经存在 阅读全文
posted @ 2007-03-24 16:44 leonardleonard 阅读(148) 评论(0) 推荐(0)
摘要: XPButton.cs代码 using System; using System.Windows; using System.Drawing; using System.Drawing.Drawing2D; using System.Windows .Forms ; namespace XPCtrl { /// summary /// XPButton 的摘要说明。 /// /summary public class XPButton:System.Windows.Forms.Button { private bool mouseover=false; public XPButton( 阅读全文
posted @ 2007-03-24 16:42 leonardleonard 阅读(651) 评论(0) 推荐(0)
摘要: private AxSHDocVw.AxWebBrowser axWebBrowser1; private System.Windows.Forms.Button button1; private System.Windows.Forms.Label label1; private AxShockwaveFlashObjects.AxShockwaveFlash axShockwaveFlash1; System.Threading.Thread thread1=new System.Threading.Thread(new System.Threading.ThreadStart(threa 阅读全文
posted @ 2007-03-24 16:41 leonardleonard 阅读(467) 评论(0) 推荐(0)
摘要: 在多线程编程中,我们经常要使用数据共享.C#中是如何实现的呢?很简单,只要把你要共享的数据设置成静态的就可以了.关键字static .如下: static Queue q1=new Queue(); static int b=0; 在这里我定义了一个整形变量b和队列q1. 接下去就可以创建多线程代码了.如下: MyThread myc; Thread[] myt; myt=new Thread[10]; myc=new MyThread(); for(int i=0;i10;++i) { myt[i]=new Thread(new ThreadStart(myc.DoFun)); // Sy 阅读全文
posted @ 2007-03-24 16:39 leonardleonard 阅读(777) 评论(0) 推荐(0)
摘要: 在.net中提供了一些类来显示和控制Windows系统上的服务,并可以实现对远程计算机服务服务的访问,如System.ServiceProcess命名空间下面的ServiceController 类,System.Management下面的一些WMI操作的类。虽然用ServiceController可以很方便的实现对服务的控制,而且很直观、简洁和容易理解。但是我认为他的功能同通过WMI来操作服务相比,那可能就有些单一了,并且对多个服务的操作可能就比较麻烦,也无法列出系统中的所有服务的具体数据。这里要讲的就是如何使用System.Management组件来操作远程和本地计算机上的服务。 WMI作 阅读全文
posted @ 2007-03-24 16:38 leonardleonard 阅读(225) 评论(0) 推荐(0)
摘要: a 警铃 \b 退格 \f 换页 \n 新的一行 \r 回车 \t 水平制表符 \v 垂直制表符 \0 空 \' 单引号 \'' 双引号 \\ 反斜线符号\r\n回车换行 阅读全文
posted @ 2007-03-24 16:37 leonardleonard 阅读(150) 评论(0) 推荐(0)
摘要: 下面的示例显示如何使用 Socket 类向 HTTP 服务器发送数据和接收响应。 [C#] public string DoSocketGet(string server) { //Sets up variables and a string to write to the server Encoding ASCII = Encoding.ASCII; string Get = "GET / HTTP/1.1\r\nHost: " + server + "\r\nConnection: Close\r\n\r\n"; Byte[] ByteGet = ASCII.GetBytes(Get); 阅读全文
posted @ 2007-03-24 16:35 leonardleonard 阅读(161) 评论(0) 推荐(0)
摘要: 参考了一些文章,整理了一下,大家可以直接拿去用吧,其实自从有了FreeTextBox这样的东东出现,UBB已经渐渐淡出江湖了。 using System; using System.Text; using System.Text.RegularExpressions; namespace Test.Com { /// summary /// 功能:UBB代码 /// 作者:Rexsp /// 日期:2004-4-6 /// /summary public class UBB { #region 构造函数 public UBB() { // // TODO: 在此处添加构造函数逻辑 // 阅读全文
posted @ 2007-03-24 16:33 leonardleonard 阅读(147) 评论(0) 推荐(0)
摘要: 事件(event)是一个非常重要的概念,我们的程序时刻都在触发和接收着各种事件:鼠标点击事件,键盘事件,以及处理操作系统的各种事件。所谓事件就是由某个对象发出的消息。比如用户按下了某个按钮,某个文件发生了改变,socket上有数据到达。触发事件的对象称作发送者(sender),捕获事件并且做出响应的对象称作接收者(receiver),一个事件可以存在多个接受者。 在异步机制中,事件是线程之间进行通信的一个非常常用的方式。比如:用户在界面上按下一个按钮,执行某项耗时的任务。程序此时启动一个线程来处理这个任务,用户界面上显示一个进度条指示用户任务执行的状态。这个功能就可以使用事件来进行处理。可以将 阅读全文
posted @ 2007-03-24 16:33 leonardleonard 阅读(141) 评论(0) 推荐(0)
摘要: .NET将关于多线程的功能定义在System.Threading名字空间中。因此,要使用多线程,必须先声明引用此名字空间(using System.Threading;)。 即使你没有编写多线程应用程序的经验,也可能听说过“启动线程”“杀死线程”这些词,其实除了这两个外,涉及多线程方面的还有诸如“暂停线程”“优先级”“挂起线程”“恢复线程”等等。下面将一个一个的解释。 a.启动线程 顾名思义,“启动线程”就是新建并启动一个线程的意思,如下代码可实现: Thread thread1 = new Thread(new ThreadStart( Count)); 其中的 Count 是将要被新线程执 阅读全文
posted @ 2007-03-24 16:31 leonardleonard 阅读(145) 评论(0) 推荐(0)
摘要: using System; using System.Runtime.InteropServices; using System.Management; namespace Hardware { /// summary /// Hardware_Mac 的摘要说明。 /// /summary public class HardwareInfo { //取机器名 public string GetHostName() { return System.Net.Dns.GetHostName(); } //取CPU编号 public String GetCpuID() { try { Man 阅读全文
posted @ 2007-03-24 16:30 leonardleonard 阅读(175) 评论(0) 推荐(0)
摘要: 如果要想获得远程的地址,需要用sendarp这个函数来实现。具体的代码如下: [DllImport("Iphlpapi.dll")] private static unsafe extern int SendARP(Int32 dest,Int32 host,ref IntPtr mac,ref IntPtr length); [DllImport("Ws2_32.dll")] private static extern Int32 inet_addr(string ip); Int32 ldest= inet_addr("157.60.68.163");//目的地的ip Int32 lhos 阅读全文
posted @ 2007-03-24 16:26 leonardleonard 阅读(134) 评论(0) 推荐(0)
摘要: -、问题描述 8数或15数问题是同一个问题,其就是一个随机排列的8个或15个数在一个方正格子中移动到达规定的一个目标状态。由于只有一个空格子,故只有在空格附近的棋子可以移动。 二、算法描述 F 算法选择 此问题需要对所有可能的路径进行穷举,但是由于随着树的高度的加大,其子结点的增加宿舍剧增,所以对所有的子结点进行穷举是不大现实的。而根据当前的状态和目标状态进行对比可以用一个评估函数来评估当前状态的好坏情况。而在这里我们选择A*算法来进行求解,A*算法是一种最好优先的算法。f'(n) = g'(n) + h'(n),f'(n)是估价函数,g'(n)是起点到终点的最短路径值,这里就表示树的高度,h 阅读全文
posted @ 2007-03-24 16:25 leonardleonard 阅读(220) 评论(0) 推荐(0)
摘要: 分油问题 -、问题描述 分油问题:两个小孩去打油,一人带了一个一斤的空瓶,另一个带了一个七两和一个三两的空瓶。原计划各打一斤油,可是由于所带的钱不够,只好合打了一斤油,在回家的路上,二人想平分这一斤油,可是又没有其它工具。现只用这三个瓶子(一斤、七两、三两)精确地分出两个半斤油来。 二、算法描述 F 算法选择 通过分析题目并结合深度优先、广度优先和迭代加深搜索的算法的特点以及有缺点,这里选择广度优先算法来求解该分油问题。如果采用深度优先算法搜索,由于其盲目性导致搜索陷入局部陷阱,并不一定能求得解即使得到解也不一定是最优解,因此并不采用此算法。迭代加深搜索则是在固定的深度上进行深度和广度搜索结合 阅读全文
posted @ 2007-03-24 16:24 leonardleonard 阅读(390) 评论(0) 推荐(0)
摘要: 一、什么是多态 面向对象程序设计中的另外一个重要概念是多态性。在运行时,可以通过指向基类的指针,来调用实现派生类中的方法。可以把一组对象放到一个数组中,然后调用它们的方法,在这种场合下,多态性作用就体现出来了,这些对象不必是相同类型的对象。当然,如果它们都继承自某个类,你可以把这些派生类,都放到一个数组中。如果这些对象都有同名方法,就可以调用每个对象的同名方法。 同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性。多态性通过派生类重载基类中的虚函数型方法来实现。 在面向对象的系统中,多态性是一个非常重要的概念,它允许客户对一个对象进行操作,由对象来完成一系列的动作,具 阅读全文
posted @ 2007-03-24 16:23 leonardleonard 阅读(177) 评论(0) 推荐(0)
摘要: C# 用户经常提出两个问题:“我为什么要另外编写代码来使用内置于 Windows 中的功能?在框架中为什么没有相应的内容可以为我完成这一任务?”当框架小组构建他们的 .NET 部分时,他们评估了为使 .NET 程序员可以使用 Win32 而需要完成的工作,结果发现 Win32 API 集非常庞大。他们没有足够的资源为所有 Win32 API 编写托管接口、加以测试并编写文档,因此只能优先处理最重要的部分。许多常用操作都有托管接口,但是还有许多完整的 Win32 部分没有托管接口。   平台调用 (P/Invoke) 是完成这一任务的最常用方法。要使用 P/Invoke,您可以编写一个描述如何调 阅读全文
posted @ 2007-03-24 16:21 leonardleonard 阅读(180) 评论(0) 推荐(0)
摘要: C#中的范型对于很多从C++转过来的程序员来说,可以说是一个天大的喜讯。hehe,至少笔者对于这个新特性是充满了敬仰之情。 在C#2.0中,匿名方法、IEnumerable接口和匿名方法的合作,使很多的编程任务变得非常的简单,而且写出来的程序非常的优美。 比如,我们可以写出如下的代码: ListBook thelib = Library.getbooks(); ListBook found = thelib.FindAll(delegate(Book curbook) { if (curbook.isbn.StartsWith("...")) return true; return f 阅读全文
posted @ 2007-03-24 16:20 leonardleonard 阅读(162) 评论(0) 推荐(0)
摘要: using System; using System.Text; using System.IO; using System.Net; using System.Net.Sockets; using System.Collections; namespace SkyDev.Web.Mail { public enum MailFormat{Text,HTML}; public enum MailPriority{Low=1,Normal=3,High=5}; #region Class mailAttachments public class MailAttachments { private 阅读全文
posted @ 2007-03-24 16:19 leonardleonard 阅读(169) 评论(0) 推荐(0)
摘要: namespace DataGridDoubleClick { using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; public class Form1 : System.Windows.Forms.Form { private System.Windows.Forms.DataGrid dataGrid1; private DataSet myDataSet; DateT 阅读全文
posted @ 2007-03-24 16:17 leonardleonard 阅读(152) 评论(0) 推荐(0)
摘要: 一、写在前面 C# 语言是一种简单但功能强大的编程语言,用于编写企业应用程序。 C# 语言从C和 C++语言演化而来,在语句、表达式和运算符方面使用了许多 C++ 功能。 C# 语言在类型安全性、版本转换、事件和垃圾回收等方面进行了相当大的改进和创新。 C# 语言提供对常用 API 样式(如 .NET 框架、COM、自动化和 C 样式 API 等)的访问。 什么是动态链接库?DLL三个字母对于你来说一定很熟悉吧,它是Dynamic Link Library 的缩写形式,动态链接库 (DLL) 是作为共享函数库的可执行文件。动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。函数的可 阅读全文
posted @ 2007-03-24 16:15 leonardleonard 阅读(234) 评论(0) 推荐(0)
摘要: using System; using System.IO; namespace mp3infons { class MP3Info { struct MP3InfoStruct { public string MP3Flag; public string Title; public string Singer; public string Album; public string Year; public string Comment; } private string MP3File; MP3InfoStruct mp3struct; public MP3Info(string MP3Na 阅读全文
posted @ 2007-03-24 16:14 leonardleonard 阅读(179) 评论(0) 推荐(0)
摘要: //使用方法: // BmpSafe.exe /file2bmp (input BMP) (input file to hide) [output file] //BmpSafe.exe /bmp2file (data BMP) [output file] using System; using System.IO; using System.Drawing; public class Bitmap24Writer { protected Bitmap bmp; protected int curX, curY, iRGB; protected uint bitsLeft, bitsTotal 阅读全文
posted @ 2007-03-24 16:13 leonardleonard 阅读(186) 评论(0) 推荐(0)
摘要: 一.多线程的概念 Windows是一个多任务的系统,如果你使用的是windows 2000及其以上版本,你可以通过任务管理器查看当前系统运行的程序和进程。什么是进程呢?当一个程序开始运行时,它就是一个进程,进程所指包括运行中的程序和程序所使用到的内存和系统资源。而一个进程又是由多个线程所组成的,线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数。多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务,也就是说允许单个程序创建多个并行执行的线程来完成各自的任务。浏览器就是一个很好的 阅读全文
posted @ 2007-03-24 16:11 leonardleonard 阅读(167) 评论(0) 推荐(0)
摘要: 公司的组织结构经常发生变化,而我们的域帐户信息(AD)是和真实的组织机构相对应的。组织机构变化了,我们自然要改动相应的域帐户信息啦。这是一件很痛苦的事情,原因是什么,大家都明白。那么能不能用程序来解决这个问题呢?(windows2003的管理工具好像已经支持批量修改域帐户信息了)。 我创建了一个windows应用程序来解决: 在Form上放置了六个comboBox用于选择公司的OU(可以选择五级OU,如果你喜欢可以用TreeView更好些)。 加载Form的时候初始化这些comboBox: private void Form1_Load(object sender, System.EventA 阅读全文
posted @ 2007-03-24 16:10 leonardleonard 阅读(386) 评论(0) 推荐(0)
摘要: using System; using System.Management; namespace DiskQuota { /// summary /// Class1 的摘要说明。 /// /summary class Class1 { /// summary /// 应用程序的主入口点。 /// /summary [STAThread] static void Main(string[] args) { try { ManagementClass c = new ManagementClass("Win32_DiskQuota"); ManagementObject quot 阅读全文
posted @ 2007-03-24 16:08 leonardleonard 阅读(168) 评论(0) 推荐(0)
摘要: using System; using System.Management; using System.Collections; class Tester { public static void Main() { try { ManagementPath path = new ManagementPath( ); path.Server = "."; path.NamespacePath = @"root\cimv2"; path.RelativePath = @"Win32_LogicalFileSecuritySetting.Path='c:\\test'"; // using tmp 阅读全文
posted @ 2007-03-24 16:07 leonardleonard 阅读(183) 评论(0) 推荐(0)
摘要: C#是.Net平台的通用开发工具,它能够建造所有的.Net应用。在.Net中所有线程都运行在应用程序域(AppDomain)中,这也许让你想到Win32进程,实际上它们还是有很大的不同。应用程序域提供了一种安全而通用的处理单元,公共语言运行库可使用它来隔离应用程序。注意在.Net中应用程序的隔离是应用程序域而不是进程,在单个进程中可以存在几个应用程序域,而且线程可以跨越应用程序域的范围,某个线程中的方法可以调用另一个线程的方法,这样的话就不会造成进程间调用或进程间切换等方面的额外开销。可以说应用程序域是物理进程(也即win32中的Process)内的逻辑进程。 在Visul C#中System 阅读全文
posted @ 2007-03-24 16:06 leonardleonard 阅读(145) 评论(0) 推荐(0)
摘要: 在C#中,进行虚方法的重载有些体会,现与大家分享。 首先请大家看看下面的例子, using System; abstract public class contact { public virtual string prinf() { return ("这是虚方法"); } } public class class1:contact { public string prinf() { return ("这是新的方法");//但这会出现编译警告,因为已经从contact那继承了一个同名方法 } } 想要通过编译,只需将prinf的声明改为 public override string prinf 阅读全文
posted @ 2007-03-24 16:02 leonardleonard 阅读(155) 评论(0) 推荐(0)
摘要: Timer组件是也是一个WinForm组件了,和其他的WinForm组件的最大区别是:Timer组件是不可见的,而其他大部分的组件都是都是可见的,可以设计的。Timer组件也被封装在名称空间System.Windows.Forms中,其主要作用是当Timer组件启动后,每隔一个固定时间段,触发相同的事件。Timer组件在程序设计中是一个比较常用的组件,虽然属性、事件都很少,但在有些地方使用它会产生意想不到的效果。     其实要使得程序的窗体飘动起来,其实思路是比较简单的。首先是当加载窗体的时候,给窗体设定一个显示的初始位置。然后通过在窗体中定义的二个Timer组件,其中一个叫Timer1,其 阅读全文
posted @ 2007-03-24 16:01 leonardleonard 阅读(408) 评论(0) 推荐(0)
摘要: 虚函数:由virtual声明,它允许在派生类中被重写,要重写方法,必须先声名为virtual public class myclass { public virtual int myint() { 函数体; } } class myclass1:myclass { public override int myint() { 函数体1; } } 抽象类、抽象函数:由abstract声明,在抽象类中可以定义抽象方法,抽象方法基本没有执行代码,派生类必须重写它,提供其执行代码 public abstract class myclass { public abstract int myint(); } 阅读全文
posted @ 2007-03-24 15:58 leonardleonard 阅读(182) 评论(0) 推荐(0)
摘要: 运算符重载是指允许用户使用用户定义的类型编写表达式的能力。它允许用户定义的类型与预定义的类型具有相同的功能。 例如,通常需要编写类似于以下内容的代码,以将两个数字相加。很明显,sum 是两个数字之和。 int i = 5; int sum = i + j; 如果可以使用代表复数的用户定义的类型来编写相同类型的表达式,那当然是最好不过了: Complex i = 5; Complex sum = i + j; 运算符重载允许为用户定义的类型重载(即指定明确的含义)诸如“+”这样的运算符。如果不进行重载,则用户需要编写以下代码: Complex i = new Complex(5); Comple 阅读全文
posted @ 2007-03-24 15:56 leonardleonard 阅读(219) 评论(0) 推荐(0)
摘要: 一. 托盘程序的主要步骤及解决方法:   为什么说用Visual C#可以十分方便的做一个托盘程序,主要的原因是在.Net框架的软件开发包( .Net FrameWork SDK )中的WinForm组件中定义了一个专门用来开发托盘程序的组件--NotifyIcon组件。下面就来介绍一下这个组件的具体用法和程序设计中的主要的技巧。   (1).如何在程序运行后隐藏窗体:   我们知道托盘程序运行后是无法看见主窗体的,他只会显示在工具栏上。在用Visual C#设计此类程序的时候,可以用二种方法使得程序运行后不显示主窗体。其中一种方法是重载主窗体中的OnActivated( )事件,OnActi 阅读全文
posted @ 2007-03-24 15:54 leonardleonard 阅读(439) 评论(0) 推荐(0)
摘要: html head TITLE分析数据库结构,自动生成代码/TITLE meta http-equiv="Content-Type" content="text/html; charset=gb2312" /head frameset cols="237,767" rows="*" frame src="dbxml.aspx" frame name="code" src="about:blank" /frameset /html ########################### dbxml.aspx 文件内容,该文件没有C#代码文件 ##### 阅读全文
posted @ 2007-03-24 15:51 leonardleonard 阅读(169) 评论(0) 推荐(0)
摘要: whois.aspx % @Page Language="C#" % % @Import Namespace="System.Net.Sockets" % % @Import Namespace="System.Text" % % @Import Namespace="System.IO" % % @Import Namespace="System.Collections" % script language="C#" runat="server" void doQuery(Object sender, EventArgs e) { String strDomain = 阅读全文
posted @ 2007-03-24 15:50 leonardleonard 阅读(175) 评论(0) 推荐(0)
摘要: POP3的使用很简单,所以.net没有向SMTP那样给出相应的类来控制. 废话少说,程序员最需要的使代码,:)! 1.打开VS.NET 2003. 2.新建一个WinForm Application. 3.添加命名空间 using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; using System.Net; using System.Net.Sockets; using Sy 阅读全文
posted @ 2007-03-24 15:49 leonardleonard 阅读(250) 评论(0) 推荐(0)
摘要: 一 :编程思想 1、创建启动盘 插入要创建的启动盘,程序自动检测光驱中光盘,利用WMI(Windows管理架构:Windows Management Instrumentation)读取该光盘的序列号(具有唯一性),把该序列号写入注册表。 2、验证 程序执行时,自动检测光驱中的光盘,利用WMI获取序列号,然后读取注册表中先前写入的序列号,二者比较,相同则程序启动成功,否则提示插入启动盘。 二 :相关知识 1、 什么是WMI? WMI(Windows管理架构:Windows Management Instrumentation)是Microsoft基于Web的企业管理(WBEM)和 Deskto 阅读全文
posted @ 2007-03-24 15:47 leonardleonard 阅读(243) 评论(0) 推荐(0)
摘要: 在.NET Framework中,System.Convert类中提供了较为全面的各种类型、数值之间的转换功能。其中的两个方法可以轻松的实现各种进制的数值间的转换: Convert.ToInt32(string value, int fromBase): 可以把不同进制数值的字符串转换为数字,其中fromBase参数为进制的格式,只能是2、8、10及16: 如Convert.ToInt32(”0010”,2)执行的结果为2; Convert.ToString(int value, int toBase): 可以把一个数字转换为不同进制数值的字符串格式,其中toBase参数为进制的格式,只能是2 阅读全文
posted @ 2007-03-24 15:39 leonardleonard 阅读(116) 评论(0) 推荐(0)
摘要: 先在项目引用里添加上对Microsoft Word 9.0 object library的引用。 using System; namespace DocConvert { class DoctoRtf { static void Main() { //创建一个word的实例 Word.Application newApp = new Word.Application(); // 指定源文件和目标文件 object Source="c:\\abc\\Source.doc"; object Target="c:\\abc\\Target.rtf"; object Unknown =Type.Mis 阅读全文
posted @ 2007-03-24 15:36 leonardleonard 阅读(243) 评论(0) 推荐(0)
摘要: 大家肯定对switch语句并不陌生,它能够让程序根据控制表达式的值,从多个动作中作出选择(从逻辑过程看,和多分支语句if-else有些相似)。在C++和java中也有这一语句,不过在C#中,这一语句则有了些变化。先看下边一个例子: switch(letter) { case 'a': Console.WriteLine("aaaaa"); case 'b': Console.WriteLine("bbbbb"); break; } 的这个例子在“case 'a'”这部分会产生一个错误,因为程序会一直执行到“case 'b'”来,也就是发生了穿越,但是在C#中,是禁止穿越发生的。因此,你必须使用 阅读全文
posted @ 2007-03-24 15:35 leonardleonard 阅读(335) 评论(0) 推荐(0)
摘要: Image bmap; IDataObject data = System.Windows.Forms.Clipboard.GetDataObject(); bmap = (Image)(data.GetData(typeof(System.Drawing.Bitmap))); Graphics g = Graphics.FromImage(bmap); SolidBrush drawBrush = new SolidBrush(Color.Red); Font drawFont = new Font("Arial", 10, FontStyle.Bold, GraphicsUnit.Mill 阅读全文
posted @ 2007-03-24 15:34 leonardleonard 阅读(179) 评论(0) 推荐(0)
摘要: 现在越来越多的网站都喜欢将用户上传的图片加上网站的版权信息,不要以为那是用photoshop之类的图片处理软件加上去的,其实我们只要写一小段代码,就可以实现这个功能。 添加版权信息的原理其实挺简单:通过图片获取Graphics类的对象,该类有一个DrawString()方法可以将信息写到图片上,甚至还可以做出各种各样的效果,如水印,背景透明等。最后保存图片即大功告成了。 我们创建一个windows应用程序项目,界面设计如图: 添加版权信息的代码如下: //创建一张位图 Bitmap bitmap=new Bitmap(this.pictureBox2.Width,this.pictureBox 阅读全文
posted @ 2007-03-24 15:32 leonardleonard 阅读(283) 评论(0) 推荐(0)
摘要: public class QueueManage { /// /// 发送对象到队列中 /// /// 队列名称,因为队列名称在一个应用中应该不改变的,所以大家最好写在配置文件中 /// 要发出去的对象 public static void SendQueue(string QueuePath,MyBase.SmsQueue sq) { System.Messaging.MessageQueue mqSend=new System.Messaging.MessageQueue(QueuePath,false); EnsureQueueExists(QueuePath); mqSend.Send 阅读全文
posted @ 2007-03-24 15:31 leonardleonard 阅读(158) 评论(0) 推荐(0)
摘要: 经常看一些的程序,有些一个解决方案带有多个项目,由于代码比较多,多人开发,所以好多vs.net下的工程是用source safe进行版本控制的。而用source safe进行版本控制需要局域网路径共享,因此好多项目换一台机器打开会出现一些问题,比如“解决方案看起来是受源代码管理,但无法找到它的绑定信息……”之类的提示信息很多。有时候修改了代码还保存不了,所以想把他去掉,下面是对项目管理前后的一些对比。 一、工程项目比较 同没有受Source Safe代码管理的工程相比: 1. 多出了.scc、.vssscc和.vspscc文件; 2. C#项目文件(.csproj)里面添加了几行标签: Scc 阅读全文
posted @ 2007-03-24 15:30 leonardleonard 阅读(223) 评论(0) 推荐(0)
摘要: Singleton通常被认为是最简单的设计模式,很多初学者都是通过它来了解设计模式的含义。然而,熟悉设计模式的技术人员都知道,要正确实现Singleton模式实际上是非常难的,涉及到很多技术细节。本文对于Singleton做了大胆深入的研究,并且探讨了C++、Java和C#中的Singleton实现。 在开发软件应用程序过程中,随着应用程序的开发,会出现重复性的模式。随着整个软件系统的开发,很多相同的模式会逐渐显现出来。 这种重复性模式概念在其他应用中是非常明显的。汽车制造就是一种此类应用。很多不同的汽车型号使用相同的子构件,包括大多数基本部件(例如,灯泡和紧固零件)以及较大的构件(例如,底盘 阅读全文
posted @ 2007-03-24 15:27 leonardleonard 阅读(197) 评论(0) 推荐(0)
摘要: 在C#中采用的是事件驱动方式,但在我们使用的过程中,有时候通过调用系统原有的消息,处理起来会比较简单一些,特别是在处理与DLL文件的交互时,的确是非常的方便。 在C#中使用自定义消息 在C#中使用自定义消息非常简单,只需要下面几个简单的步骤就可以了: 1、 定义消息 定义消息的方法和VC中定义消息有一点点不同 比如在VC中申明一个自定义消息: #define WM_TEST WM_USER + 101 而在c#中消息需要定义成windows系统中的原始的16进制数字,比如自定义消息 public const int USER = 0x0400; 那么我们在VC中申明的自定义消息,在C#中就可以 阅读全文
posted @ 2007-03-24 15:26 leonardleonard 阅读(129) 评论(0) 推荐(0)
摘要: *本文参考了《JAVA与模式》的部分内容,适合于设计模式的初学者。 合成模型模式属于对象的结构模式,有时又叫做部分-整体模式。合成模式将对象组织到树结构中,可以用来描述整体与部分的关系。合成模式可以使客户端将单纯元素与复合元素同等看待。如文件夹与文件就是合成模式的典型应用。根据模式所实现接口的区别,合成模式可分为安全式和透明式两种。 安全式的合成模式要求管理聚集的方法只出现在树枝构件类中,而不出现在树叶构件类中。 涉及到三个角色: 抽象构件(Component):这是一个抽象角色,它给参加组合的对象定义公共的接口及其默认的行为,可以用来管理所有的子对象。合成对象通常把它所包含的子对象当做类型为 阅读全文
posted @ 2007-03-24 15:24 leonardleonard 阅读(202) 评论(0) 推荐(0)
摘要: 在.net中,对英文语音有较好的支持,但是对中文语音的支持还没有加入进来,我们要想实现中文发音或中文语音识别,必需先安装微软的Speech Application SDK(SASDK),它的最新版本是 SAPI 5.1 他能够识别中、日、英三种语言,你可以在这里下载:http://www.microsoft.com/speech/download/sdk51/,需要安装这两个文件Speech SDK 5.1和5.1 Language Pack,其中5.1 Language Pack可以选择安装支持的语言。 安装好以后,我们就可以开始进行语音程序的开发了,当然,在这之前我们需要把SAPI.dll 阅读全文
posted @ 2007-03-24 15:23 leonardleonard 阅读(359) 评论(0) 推荐(0)
摘要: 概述:在真正的对象化开发项目中,我们通常会将常用的业务实体抽象为特定的类,如Employee、Customer、Contact等,而多数的类之间会存在着相应的关联或依存关系,如Employee和Customer通过Contact而产生关联、Contact是依赖于Employee和Customer而存在的。在实际的对象应用模块中,可能会有这样的需求:获得一组客户对象(即Customers集合类的实例,如customers),指向其中一个Customer对象(如customers[i]),通过访问这个Customer对象的属性Name(customers[i].Name)和Contacts(如cu 阅读全文
posted @ 2007-03-24 15:21 leonardleonard 阅读(179) 评论(0) 推荐(0)
摘要: 目录 反射的概述 反射appDomain 的程序集 反射单个程序集 利用反射获取类型信息 设置反射类型的成员 通过反射创建类型的实例 反射类型的接口 反射的性能 反射的概述 反射的定义:审查元数据并收集关于它的类型信息的能力。元数据(编译以后的最基本数据单元)就是一大堆的表,当编译程序集或者模块时,编译器会创建一个类定义表,一个字段定义表,和一个方法定义表等,。System.reflection命名空间包含的几个类,允许你反射(解析)这些元数据表的代码 和反射相关的命名空间(我们就是通过这几个命名空间访问反射信息): System.Reflection.MemberInfo System.Re 阅读全文
posted @ 2007-03-24 15:18 leonardleonard 阅读(134) 评论(0) 推荐(0)
摘要: VC和BCB中做一个Server的监听程序,只需要指定端口,然后监听(Listen)就行了.在C#找不到这个函数了,慢慢看MSDN,怎么需要指定IP和Port才能监听,那么多网卡的机器应该怎么写程序呢?下面的程序可以解释怎么去做. TcpListener 类别会提供简易的方法,用以在封锁的同步模式中聆听 (Listen) 和接受输入的连接要求。您可以使用 TcpClient 或 Socket 来连接 TcpListener 。使用 IPEndPoint 、本机 IP 地址和连接端口编号,或者就只用连接埠编号来建立 TcpListener 。如果您想要基础服务供货商为您指派那些值,请指定 Any 阅读全文
posted @ 2007-03-24 15:16 leonardleonard 阅读(237) 评论(0) 推荐(0)
摘要: using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; using System.IO; using System.Text; using System.Security.Cryptography; namespace 非对称加密 { /// summary /// Form1 的摘要说明。 /// /summary public class Form1 : Syste 阅读全文
posted @ 2007-03-24 15:15 leonardleonard 阅读(221) 评论(0) 推荐(0)
摘要: (原文排版格式 http://www.marshine.com) 名称 Safely Method 意图 通过方法保证返回有效(不为空引用,null或Nothing)的对象或抛出异常,当存在多个调用者时简化调用者需要处理null返回值的代码。 动机 一个存放对象的集合或类似功能的容器类,提供了根据键值返回集合成员的接口,如果不存在指定键值的项,则返回一个空引用。例如根据Student的SID(学号)从StudentManager返回Student对象,如果存在指定的学号,则返回一个有效的Student对象,否则返回null。大多数情况下调用者需要根据是否null值决定如何处理,如果在程序的多处 阅读全文
posted @ 2007-03-24 15:14 leonardleonard 阅读(184) 评论(0) 推荐(0)
摘要: 原文排版格式:http://www.marshine.com) reversion:2004/5/28 修改说明:感谢Ninputer提到的CLS兼容问题,同时修改了原来版本没有提及的Equals改写,以及修改"=="重载的不完善代码,和增加enum struct内容 reversion:2004/6/4 增加kirc提到的Enum的Flags特性,因为文本超长,新的版本可以在http://www.marshine.com上阅读。 常量类型的表示 系统中常常有一些属性的属性值是固定的一组值,它们的值域是封闭的(有限数量),比如国家代码(每个国家具有唯一的代码,而在一定时期国家的数量是确定的)、 阅读全文
posted @ 2007-03-24 15:13 leonardleonard 阅读(175) 评论(0) 推荐(0)
摘要: 前言:设计模式是软件开发领域的精髓之一。学好设计模式是目前每一个开发人员的必修课。目前关于设计模式的书很多,其中比较好的有GOF那本的中译本,但并不很适合初学者。还有一本是《JAVA与模式》,比较适合初学者使用,在此强烈推荐。但这本书的不足之处是一些地方讲的过于繁琐,很多地方只须简单说明一下即可,却大费笔墨,使得书籍很厚,看起来费力。而且是用JAVA描述的,这使得一些只懂C#的人无从下手。我是一个.net的拥护者,为了看这本书我特意看了些JAVA的书,感觉JAVA在书籍的多样性方面比 .net好很多,而且不少书籍的质量很高。可能是现在JAVA已经比较成熟的原因吧。为了方便.net的爱好者学习设 阅读全文
posted @ 2007-03-24 15:10 leonardleonard 阅读(138) 评论(0) 推荐(0)
摘要: 设计模式C#描述——抽象工厂模式 阅读此文应先阅读简单工厂模式与工厂方法模式 抽象工厂模式是对象的创建模式,它是工厂方法模式的进一步推广。 假设一个子系统需要一些产品对象,而这些产品又属于一个以上的产品等级结构。那么为了将消费这些产品对象的责任和创建这些产品对象的责任分开,可以引进抽象工厂模式。这样的话,消费产品的客户不需要直接参与产品的创建工作,而只需要向一个公用的工厂接口请求所需要的产品。 抽象工厂角色:担任这个角色的是工厂方法模式的核心,它是与应用系统的商业逻辑无关的。通常使用接口或抽象类实现。 具体工厂角色:这个角色直接在客户端的调用下创建产品的实例。这个角色含有选择合适的产品对象的逻 阅读全文
posted @ 2007-03-24 15:07 leonardleonard 阅读(155) 评论(0) 推荐(0)
摘要: 设计模式C#描述——单例与多例模式 作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。 单例模式有以下特点: 单例类只能有一个实例。 单例类必须自己创建自己的唯一实例。 单例类必须给所有其他对象提供这一实例。 一个典型的单例类的实现如下所示:其中构造子私有表示子类不能被继承。 public class Singleton { private static Singleton m_instance = null; private Singleton() { } public static Singleton getInstance() 阅读全文
posted @ 2007-03-24 15:06 leonardleonard 阅读(232) 评论(0) 推荐(0)
摘要: partial 关键字的作用是将你的 class 分为多个部分,编译器会将多个部分拼到一起去。 public partial class SampleClass ...{ public void MethodA() ...{ } } public partial class SampleClass ...{ public void MethodB() ...{ } } 和 public class SampleClass ...{ public void MethodA() ...{ } public void MethodB() ...{ } } 是等价的。 我猜想这个东西出现的初衷是为了解 阅读全文
posted @ 2007-03-24 15:05 leonardleonard 阅读(131) 评论(0) 推荐(0)
摘要: FCL得很多方法的返回值都是包含字符的Byte数组而不是返回一个String,这样的方法包含在如下的类中: · System.Net.Sockets.Socket.Receive · System.Net.Sockets.Socket.ReceiveFrom · System.Net.Sockets.Socket.BeginReceive · System.Net.Sockets.Socket.BeginReceiveFrom · System.Net.Sockets.NetworkStream.Read · System.Net.Sockets.NetworkStream.BeginRead 阅读全文
posted @ 2007-03-24 15:04 leonardleonard 阅读(336) 评论(0) 推荐(0)
摘要: 这个是对于 EMAIL发送系统(C#+基于SMTP认证) 1.0 的改版这个第一版是2002年11月写的,过了一年半了,才有人提意见,就修正了一下,因为后来做的项目一直用不上,也就没有注意到 前段时间有网友反馈了一些问题,这次主要做了一些修正 1,text模式下发往163的邮件内容不见了 2,如果用outlook接收而不是在网上看邮件的话,会发现正文内容,但其后跟着一些乱码. 3,一些新开通的邮箱收到的是乱码,如*@126.com 4,修正了带附件的邮件,打开附件时内容混乱的问题 感谢 Lion互动网络论坛 的smhy8187和邮箱是grassdragon_china@yahoo.com.cn 阅读全文
posted @ 2007-03-24 15:03 leonardleonard 阅读(227) 评论(0) 推荐(0)
摘要: //定义变量 int i,start,stop,t,stat,statt,pp,pagecount,pagesize; //变量初始值 stat=0; statt=0; start=0;//开始查询的字符串位置,初始为0 stop=0; pagesize=2000;//定义每页至少显示字符串数 pagecount=0; //获得当前的页数 pa=Request.Params["page"]; if(pa=="" || pa==null) pa="1"; pp=Convert.ToInt32(pa); //获得内容 articletxt=rs["contenttxt"].ToString(); 阅读全文
posted @ 2007-03-24 14:58 leonardleonard 阅读(209) 评论(0) 推荐(0)
摘要: 在 C# 里面, 主窗口拥有主线程, 主线程产生子线程监控 Socket 埠, 子线程一收到数据流就会给主线程发送一个事件, 创建一个窗口. 现在的情况是子线程能够收到数据流, 主窗口能够收到子线程发送过来的事件, 能够创建一个窗口. 这个窗口有问题: 窗口状态像死掉程序的窗口一样, 反白的. 开发碰到很棘手的问题, 寻找解决方法. 品味程序出错过程, 逐步跟踪程序执行过程, 每一行代码每一条语句全部执行, 怪了, 大白天碰到鬼了. 主窗口加入一个按钮, 按钮的作用就是执行主窗口的事件, 启动程序, 点击按钮, 程序正确创建一个窗口, 按照这个测试结果来看, 事件处理中的代码没有任何问题. 在 阅读全文
posted @ 2007-03-24 14:58 leonardleonard 阅读(369) 评论(0) 推荐(0)
摘要: 正文: 一、首先要引用一个Excel的组件,我一开始是在Office XP下尝试的,不 成功,后来把XP给干掉,装2k,就成功了,所以这里分享的是Office 2k下 引用相关组件来实现功能的,在工程中引用COM标签中的Microsoft Excel 9.0 Object Library,添加成功后,引用中会多出三个引用项: Excel、Office、VBIDE。 二、具体代码。 using System; using System.Data; using Excel; using System.IO; namespace Test.ExcelCom { /// summary /// 将 阅读全文
posted @ 2007-03-24 14:55 leonardleonard 阅读(205) 评论(0) 推荐(0)
摘要: C# 2.0中提供了通过delegate实现匿名函数功能,能有效地减少用户记代码工作,例如 以下为引用: ... button1.Click += new EventHandler(button1_Click); ... void button1_Click(Object sender, EventArgs e) { // Do something, the button was clicked... } ... 可以被简化为直接使用匿名函数构造,如 以下为引用: ... button1.Click += delegate(Object sender, EventArgs e) { // Do 阅读全文
posted @ 2007-03-24 14:54 leonardleonard 阅读(291) 评论(0) 推荐(0)
摘要: using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; using System.Drawing.Imaging; using System.Runtime.InteropServices; namespace LiBo.ColorPicker { /// summary /// Form1 的摘要说明。 /// /summary public class Form1 阅读全文
posted @ 2007-03-24 14:52 leonardleonard 阅读(279) 评论(0) 推荐(0)
摘要: 大家知道,在我们访问一个网站的时候。系统会把这个网站上的图片,动画等内容全部缓存到Internet临时文件夹中。 我们可以通过 Drives:\Documents and Settings\user\Local Settings\Temporary Internet Files访问。但是可能我们都没有想到,里面的文件实际却不同于我们系统中其他的文件夹和文件的关系。 举例说明,我们在VS.net下写一个函数来返回指定文件夹中的文件夹和所有文件时,但我们把Internet临时文件夹的地址传进去时,系统只会返回一个文件,那就是desktop.ini(每个文件夹都有),还有一个隐藏的文件夹。所 阅读全文
posted @ 2007-03-24 14:50 leonardleonard 阅读(259) 评论(0) 推荐(0)
摘要: 在C#中取汉字的拼音码,支持数字、英文字符、一级汉字、二级汉字 public string GetFirstLetter(string hz) { string ls_second_eng = "CJWGNSPGCGNESYPBTYYZDXYKYGTDJNNJQMBSGZSCYJSYYQPGKBZGYCYWJKGKLJSWKPJQHYTWDDZLSGMRYPYWWCCKZNKYDGTTNGJEYKKZYTCJNMCYLQLYPYQFQRPZSLWBTGKJFYXJWZLTBNCXJJJJZXDTTSQZYCDXXHGCKBPHFFSSWYBGMXLPBYLLLHLXSPZMYJHSOJNGHD 阅读全文
posted @ 2007-03-24 14:48 leonardleonard 阅读(1565) 评论(0) 推荐(0)
摘要: 其实现的原理就是先将汉字转化成为内码,然后通过内码和拼音的对照来查找。 详细的代码如下所示: public class chs2py {private static int[] pyvalue=new int[]{-20319,-20317,-20304,-20295,-20292,-20283,-20265,-20257,-20242,-20230,-20051,-20036,-20032,-20026, -20002,-19990,-19986,-19982,-19976,-19805,-19784,-19775,-19774,-19763,-19756,-19751,-19746,-19 阅读全文
posted @ 2007-03-24 14:48 leonardleonard 阅读(117) 评论(0) 推荐(0)
摘要: 1. 避免将多个类放在一个文件里面。 2. 一个文件应该只有一个命名空间,避免将多个命名空间放在同一个文件里面。 3. 一个文件最好不要超过500行的代码(不包括机器产生的代码)。 4. 一个方法的代码长度最好不要超过25行。 5. 避免方法中有超过5个参数的情况。使用结构来传递多个参数。 6. 每行代码不要超过80个字符。 7. 不要手工的修改机器产生的代码。 a) 如果需要编辑机器产生的代码,编辑格式和风格要符合该编码标准。 b) Use partial classes whenever possible to factor out the maintained portions. 8. 阅读全文
posted @ 2007-03-24 14:45 leonardleonard 阅读(128) 评论(0) 推荐(0)
摘要: 命名约定和风格 1. 使用Pascal的命名规范命名类型和方法的名字。 public class SomeClass { public SomeMethod(){} } 2. 使用camel命名规范命名局部变量和方法的参数。 int number; void MyMethod(int someNumber) {} 3. 在命名接口的时候使用I作为前缀。 interface IMyInterface {...} 4. 私有成员变量使用m_作为前缀。 public class SomeClass { private int m_Number; } 5. 自定义的属性类使用Attribute作为其后 阅读全文
posted @ 2007-03-24 14:43 leonardleonard 阅读(155) 评论(0) 推荐(0)
摘要: API (Application Programming Interface) is a set of commands, which interfaces the programs with the processors. The most commonly used set of external procedures are those that make up Microsoft Windows itself. The Windows API contains thousands of functions, structures, and constants that you can 阅读全文
posted @ 2007-03-24 14:41 leonardleonard 阅读(232) 评论(0) 推荐(0)
摘要: 一般来说,在IT技术界以及硬件产业,技术的更新换代速度非常得惊人,而惯例是所有的新技术都会遵循向下兼容的原则,但是.NET技术不仅仅做到了这一点,.NET甚至实现了相互之间的各自调用,这一点是非常难能可贵的。也就是说,不但我们可以在.NET组件中调用COM组件,同时也可以在COM组件中正常的调用.NET组件。这点带来的好处是显而易见的,一方面我们可以保持现有的技术资源,另一方面,在现有资源中可以利用.NET所带来的各种新技术。 在E\ClassLibrary1\目录下用SN命令生成一个GUID,如下所示: sn –k keyfile.snk 在工程的AssemblyInfo.cs文件中加入如下 阅读全文
posted @ 2007-03-24 14:40 leonardleonard 阅读(208) 评论(0) 推荐(0)
摘要: 如何使用DNS类并得到机器的IP地址的技巧 介绍 这篇文章并不是技术纵览或大型讨论,而更像是关于如何得到IP地址或主机名称的技巧集锦。在 Win32 API编程中你可以使用NetWork API,在.NET平台中也是类似的。唯一的不同之处是你要找到并理解为完成这个任务需要什么名称空间(namespace)和类。在.NET平台中NetWork API存在于System.Net名称空间中。System.Net名称空间中的DNS类可以用来得到机器名称和IP地址。 DNS类提供类简单的域名解释函数。DNS 类为处理Internet域名(DNS)信息提供支持.这些返回的信息包括多重的IP地址和主机别名。 阅读全文
posted @ 2007-03-24 14:38 leonardleonard 阅读(494) 评论(0) 推荐(0)
摘要: c#中写一个多线程应用是非常简单的,本章将介绍如何在c#种开发多线程程序。在.net中线程是由System.Threading 名字空间所定义的。所以你必须包含这个名字空间。 using System.Threading; 开始一个线程 System.Threading 名字空间的线程类描述了一个线程对象,通过使用类对象,你可以创建、删除、停止及恢复一个线程。创建一个新线程通过new 操作,并可以通过start()方法启动线程 thread = new Thread(new ThreadStart(HelloWorld)); thread.Start(); 注意:和java程序不同,创建新线程 阅读全文
posted @ 2007-03-24 14:37 leonardleonard 阅读(160) 评论(0) 推荐(0)
摘要: 最近经常看到论坛中许多帖子询问如何使用split来分割字符串,我这里对split做一些简单的总结,希望能够对大家有所帮助。下面介绍几种方法: 第一种方法:打开vs.net新建一个控制台项目。然后在Main()方法下输入下面的程序。 string s="abcdeabcdeabcde"; string[] sArray=s.Split('c'); foreach(string i in sArray) Console.WriteLine(i.ToString()); 输出下面的结果:ab deab deab de 我们看到了结果是以一个指定的字符进行的分割。如果我们希望使用多个字符进行分割如c, 阅读全文
posted @ 2007-03-24 14:35 leonardleonard 阅读(158) 评论(0) 推荐(0)
摘要: 使用C#编写不同的“Hello World”程序 1. A Beginners Hello World public class HelloWorld { public static void Main() { System.Console.WriteLine("HELLO WORLD"); } } 2. Slightly improved version using System; public class HelloWorld { public static void Main() { Console.WriteLine("HELLO WORLD"); } } 3. Command Lin 阅读全文
posted @ 2007-03-24 14:34 leonardleonard 阅读(176) 评论(0) 推荐(0)