- 博客(47)
- 资源 (5)
- 收藏
- 关注
原创 浅析Attribute在C# WinForm控件开发中的使用
<br /> Attribute在C# WinForm控件开发中的使用是如何的呢?我们在之前的文章中提到了Attribute,那么具体的在开发实战中是如何运用的呢?需要注意什么呢?来让我们看看一个Attribute在C# WinForm控件开发中的使用的实例。<br /> Attribute在C# WinForm控件开发中的使用的实例<br /> 这个类是直接从Control类派生出来的,自定义控件都是直接从Control类派生出来的。这个类定义了一个属性TextAlignment,用来控制文本
2011-03-13 23:06:00 493
原创 C# WinForm控件开发如何设置属性的默认值
<br />C# WinForm控件开发设置默认值是非常有必要的,实现起来也很容易,本文笔者为你介绍设置默认值的方法,希望能给你带来帮助。<br />如果你为属性设定了默认值,那么当开发者修改了属性的值,这个值在Property Explorer中将会以粗体显示。VS为属性提供一个上下文菜单,允许程序员使用C# WinForm控件开发把值重置为默认值。<br />当Visual Studio进行控件的串行化时,他会判断那些值不是默认值,只有不是设置默认值的属性才会被串行化,所以为属性提供设置默认值时可以大大
2011-03-13 22:22:00 1388
原创 无废话C#设计模式之十:FLYWEIGHT
运用共享技术有效地支持大量细粒度的对象。 场景 在比较底层的系统或者框架级的软件系统中,通常存在大量细粒度的对象。即使细力度的对象,如果使用的数量级很高的话会占用很多资源。比如,游戏中可能会在无数个地方使用到模型数据,虽然从数量上来说模型对象会非常多,但是从本质上来说,不同的模型可能也就这么几个。 此时,我们可以引入享元模式来共享相同的模型对象,这样就可能大大减少游戏对资源(特别是内存)的消耗。
2010-01-26 13:24:00 280
原创 无废话C#设计模式之九:Proxy
意图 为其他对象提供一种代理以控制对这个对象的访问。 场景 代理模式非常常用,大致的思想就是通过为对象加一个代理来降低对象的使用复杂度、或是提升对象使用的友好度、或是提高对象使用的效率。在现实生活中也有很多代理的角色,比如明星的经纪人,他就是一种代理,经纪人为明星处理很多对外的事情,目的是为了节省被代理对象也就是明星的时间。保险代理人帮助投保人办理保险,目的降低投保的复杂度。
2010-01-26 13:22:00 205
原创 无废话C#设计模式之八:Facade
意图 为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 场景 在一个为游戏充值的网站中,创建订单需要与三个外部接口打交道: l 用户系统:根据用户名获取用户ID、查看用户是否已经激活了游戏 l 卡系统:查看某种类型的充值卡是否还有库存 l 充值系
2010-01-26 13:20:00 192
转载 无废话C#设计模式之七:Adapter
无废话C#设计模式之七:Adapter 意图 把一个类的接口变换成客户端所期待的另一种接口,从而使原本接口不匹配而无法在一起工作的两个类能够在一起工作。 场景 假设网络游戏的客户端程序分两部分。一部分是和服务端通讯的大厅部分,大厅部分提供的功能有道具购买、读取房间列表、创建房间以及启动游戏程序。另一部分就是游戏程序了,游戏程序和大厅程序虽
2010-01-26 13:19:00 163
转载 无废话C#设计模式之六:Builder
无废话C#设计模式之六:Builder 意图 将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。 场景 在电脑城装机总有这样的经历。我们到了店里,先会有一个销售人员来询问你希望装的机器是怎么样的配置,他会给你一些建议,最终会形成一张装机单。和客户确定了装机配置以后,他会把这张单字交给提货的人,由他来准备这些配件,准备完
2010-01-26 13:17:00 181
转载 无废话C#设计模式之五:Prototype
无废话C#设计模式之五:Prototype 意图 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 场景 游戏场景中的有很多相似的敌人,它们的技能都一样,但是随着敌人出现的位置不同,这些人的能力不太一样。假设,我们现在需要把三个步兵组成一队,其中还有一个精英步兵,能力特别高。那么,你或许可以创建一个敌人抽象类,然后对于不同
2010-01-26 13:14:00 176
转载 无废话C#设计模式之四:Factory Method
无废话C#设计模式之四:Factory Method 意图 定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。 场景 上次,我们使用抽象工厂解决了生产一组产品的问题,但是我们把各个场景作为了具体工厂来生产场景模式和场景纹理两个产品。在调用代码中也并没有出现具体工厂的影子。其实,场景类要做的不仅仅是创建具体的产品系列,可能它还需要
2010-01-26 13:11:00 193
转载 无废话C#设计模式之三:Abstract Factory
无废话C#设计模式之三:Abstract Factory 意图 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 场景 还是上次说的那个网络游戏,定下来是一个休闲的FPS游戏。和CS差不多,8到16个玩家在游戏里面分成2组对战射击。现在要实现初始化场景的工作。要呈现一个三维物体一般两个元素是少不了的,一是这个物体的骨架
2010-01-26 13:07:00 204
转载 无废话C#设计模式之二:Singleton
无废话C#设计模式之二:Singleton 意图 保证一个类只有一个实例,并提供访问它的全局访问点。 场景 我们现在要做一个网络游戏的服务端程序,需要考虑怎么样才能承载大量的用户。在做WEB程序的时候有各种负载均衡的方案,不管是通过硬件实现还是软件实现,基本的思想就是有一个统一的入口,然后由它来分配用户到各个服务器上去。
2010-01-26 13:05:00 217
转载 无废话C#设计模式之一:开篇
无废话C#设计模式之一:开篇 什么是设计模式? 什么是少林拳呢?少林拳是少林僧人经过长期的总结,得出的一套武功套路。有一本叫做少林拳法的武功秘籍,上面记载这这套拳法的适用人群,打法套路和学成后的效果。设计模式虽然记录在了设计模式一书上,但是要真正掌握设计模式光靠看每一个模式的结构并且进行模仿是不够的。试想一下,在真枪实战的情况下,谁会和你按照少林拳法,一二三四的套
2010-01-26 13:04:00 230
转载 无废话C#设计模式之一:开篇
无废话C#设计模式之一:开篇 什么是设计模式? 什么是少林拳呢?少林拳是少林僧人经过长期的总结,得出的一套武功套路。有一本叫做少林拳法的武功秘籍,上面记载这这套拳法的适用人群,打法套路和学成后的效果。设计模式虽然记录在了设计模式一书上,但是要真正掌握设计模式光靠看每一个模式的结构并且进行模仿是不够的。试想一下,在真枪实战的情况下,谁会和你按照少林拳法,一二三四的套
2010-01-26 13:03:00 294
转载 无废话C#设计模式之一:开篇
无废话C#设计模式之一:开篇 什么是设计模式? 什么是少林拳呢?少林拳是少林僧人经过长期的总结,得出的一套武功套路。有一本叫做少林拳法的武功秘籍,上面记载这这套拳法的适用人群,打法套路和学成后的效果。设计模式虽然记录在了设计模式一书上,但是要真正掌握设计模式光靠看每一个模式的结构并且进行模仿是不够的。试想一下,在真枪实战的情况下,谁会和你按照少林拳法,一二三四的套路打
2010-01-26 13:02:00 176
转载 《软件需求》学习笔记
《软件需求》学习笔记 前几天读了Karl E.Wiegers《软件需求》,书的内容写得非常好。我这里谈谈读了此书之后的一些感受。概括起来包括以下几点:一、需求层次二、需求开发(需求工程方法、需求来源、如何获取需求并给出一些指导方法)需求分析过程:1、 需求收集:定义项目的视图和范围。学习与了解本行业的知识,这样与用户比较容易沟通。访问有潜力的用户,对用
2009-09-26 09:39:00 544
原创 学Windows Workflow Foundation(2)-----让WF通过参数接收数据
在这一节,我们一起学习通过其他程序调用工作流,并且在工作流启动时给工作流传递一些数据,使其在工作流中使用。 在workflow开始执行时,我们有两种方式给工作流传递数据------参数和事件。今天,我们先说说怎样通过参数来给工作流传递数据。 需要传递给workflow的参数,我们需要先在工作流中通过属性来进行设置,而后在其他程序调用这个工作流创建一个工作流的实例时,通过 Dictio
2009-09-11 18:01:00 337
原创 学Windows Workflow Foundation(1)-----创建和调试一个WF实例
今天开始,我打算开始学习WWF,从网上搜索到了部分相关资料,也找到了一些文档和实验。但是,资料以英文的占多数,所以,在学习起来似乎比较吃力,不过相信我能坚持下来,顺便提高点英语阅读能力,不过本人英文水平实在是差,解释的不到位或错误的地方请大家谅解(千万别笑话我,哈哈)。毕竟我也是从空白开始学习WWF,让我们一起进步。 首先,我们需要安装WinFX(下载)和Visual Studio 20
2009-09-11 15:28:00 515
原创 C#SqlCommandBuilder 实现批量更新
C#SqlCommandBuilder 实现批量更新有没有人遇到这种情况,用 SqlDataAdapter.Update(ds)更新时出错?answer: 一般是这样的,如果用设计器将SqlDataAdapter拖到页面中使用时,不会出现这种情况,因为 系统会自动生成SqlDataAdapter的属性命令,比如: .Upd
2009-09-03 10:56:00 1601 2
原创 源码大全
源码大全网址http://www.codeproject.com/ 正则表达式http://regexlib.com/RETester.aspx
2009-09-02 09:31:00 283
原创 C# 加密(Encrypt) 解密(Decrypt) 使用DESCryptoServiceProvider
C# 加密(Encrypt) 解密(Decrypt) 使用DESCryptoServiceProviderC# 加密(Encrypt) 解密(Decrypt) 使用DESCryptoServiceProvider如下Security.cs using ...System; using System.IO; using System.Security.Cryptogra
2009-07-29 17:17:00 3640 1
转载 SQL2000系统表、存储过程、函数的功能介绍及应用
----系统表--------------------------------------------------------------------------------------虽然使用系统存储过程、系统函数与信息架构视图已经可以为我们提供了相当丰富的元数据信息,但是对于某些特殊的元数据信息,我们仍然需要直接对系统表进行查询。因为SQL Server 将
2009-07-29 14:28:00 1086
原创 消息队列(MSMQ)实现多服务器应用程序之间消息实时交互
我所介绍的例子是利用微软的消息队列(msmq)实现多个服务器之间消息实时传递。应用程序:基于dotnet平台采用WinForm+Webservice开发的应用程序。每个地区都有自己的数据库和Webservice服务器。Webservice服务器有很多台,这样多个服务器上用户互相交流就成了问题。思前想后采用了msmq,设计思想如下:例子:A服务器用户user1发送消息给B服务器
2009-07-28 10:55:00 2741
转载 Windows Service开发日志四(用程序设置服务的运行状态及启动方式)
开发了服务,总要开发一个设置界面来开启或停止服务.服务的启动方式有两种:1.手动运行:手动运行,则每次都要手动去开启服务,开启了服务后,只要重启计算机,服务又会被停止.2.自动运行:当服务被设置以自动运行方式安装,安装后服务是不会自动启动的(无论选择自动或手动,服务刚安装完时,状态都是停止的),但重启后服务就会自动启运,就算停止了服务,只要启动状态是自动,那么重启计算机后,服务又会自
2009-07-28 09:55:00 1314 1
原创 windows Service开发日志三(制作安装包)
windows service没有办法双击就运行.它需要一个安装类来辅助.接下来我们要做的,就是给这个服务添加一个安装辅助类.在project名上右键,添加新项目,选择installer class.vs会自动给我们创建一个安装类.实际上,你也可以添加一个新类,然后让这个类继承自System.Configuration.Install.Installer.所以,实际上,用c#写一个安装类,实际上
2009-07-28 09:54:00 817
转载 Windows Service开发日志二(安装与调试)
要运行这个service我们还要做下边的几个步骤:1.为我们的Service添加Installer,右键点击设计视图,选择Add Installer,VS将会为我们添加ProjectInstaller.cs,并在ProjectInstaller中添加组件serviceInstaller1和serviceProcessInstaller1,现在我们来修改他们的属性来控制Service的安装和启
2009-07-28 09:53:00 488
原创 Windows Service开发日志一(Win服务的一些技巧与出错处理)
最近要帮朋友做一个即时发送邮件的系统,由于功能单一而且要长期执行,所以我想起用Windows服务的方式处理,同时也可以学习一下相关知识.在开发中遇到的问题和处理方法,我都记录在其中,希望能帮助有相同困难要处理的朋友.一.Windows服务中的时钟问题.要在服务中实现定时询问,一般有两种做法,其一是用时钟定时执行,其二是用线程,如果用时钟来处理的话就要注意了,从工具箱中取出的控件默认都是继
2009-07-28 09:49:00 621
原创 C#中类的隐藏和重写的区别
C#的类有隐藏和重写,两个的作用其实都是为了实现子类的更改(我是这样认为了),但之间又有区别,隐藏的方法,只能在子类中实现,而重写的方法是可以在父类中得以实现.可能这样说有点玄,举个例子就可很容易说明:类文件中如下定义:view plaincopy to clipboardprint?public class MyTestClass //父类 { public vi
2009-07-28 09:46:00 1072
原创 CruiseControl.NET持续集成实践
前言团队开发需要进行集中的项目文件管理与有效的协调,我们采用源代码管理工具协助我们管理,卓有成效。限定重要文件的访问权限、使用悲观锁杜绝成员同时编辑同一份文件、不允许长时间迁出文件等规则让我们在某一时间段内非常愉快。但是慢慢的,有人抱怨“我获取了源代码怎么编译错误?”。于是增加规定:迁入之前必须获取最新,然后再一次编译,成功后方可迁入VSS。这种办法是很不错,但是工作繁琐了,尤其对大型项
2009-07-27 17:28:00 1058
原创 TestDriven.NET 2.0——单元测试的好助手
TestDriven.NET 2.0——单元测试的好助手(zhuan) 引言在软件开发领域,测试驱动开发(Test Driven Development,TDD)技术在逐渐为广大开发者所接受,它是在添加新代码之前让你的测试代码出错的一种开发技术。在开始编写代码之前首先要写你的测试代码,然后再编写代码让你的测试通过,可以想象,如果没有一个好的单元测试工具,这项工作其实是无法完成的
2009-07-27 16:07:00 1168
原创 .NET开源项目介绍及资源推荐:单元测试
说到单元测试,大家首先会想到NUnit,但对于NUnit来说还存在着一些不足,比如说它不能够与VS.NET IDE集成、扩展能力比较差等,除此之外我们还需要一些自动化的测试工具,本文将简单介绍一下如下几种单元测试工具以及推荐一些学习资源。1.NUnit2.TestDriven.Net3.NUnitForms4.NUnitAsp 一.NUnit提起大名鼎鼎的NUni
2009-07-27 14:44:00 233
原创 实践单元测试-Using NUnit
NUnit是.net平台上使用得最为广泛的测试框架之一,本文将通过示例来描述NUnit的使用方法,并提供若干编写单元测试的建议和技巧,供单元测试的初学者参考。继续下文之前,先来看看一个非常简单的测试用例(TestCase):Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighli
2009-07-27 11:40:00 220
原创 NUnit2.0详细使用方法
NUnit2.0详细使用方法小提示:点击可切换浏览 NUnit2.0详细使用方法 注:NUnit中文文档可以参看我的另一个站点:http://www.36sign.com/nunit前一段时间,有人问我在.NET里如何进行TDD开发.这个问题促使我想对NUnit做一个详细的介绍.因为我们大家都知道NUnit是在.NET进行TDD的利器.如果你已经知道很多关于NUn
2009-07-25 11:56:00 234
原创 使用Nunit进行单元测试入门
非常感谢大家的支持和游览,最近一段时间在忙于公司的事,一直想介绍也在学习单元测试的知识,现在一起介绍一下. 使用Nunit进行单元测试入门前言:Nunit是一项开源的项目,利用Nunit,你可以方便快捷地对已有的.NET组件进行单元测试。利用Nunit,你可以在不修改原有代码的情况下,编写专门的测试代码对需要测试的函数和组件进行测试。如果大家有兴趣可以将Nunit和VSTS自带的
2009-07-24 15:06:00 262
原创 AcceptChanges()和RejectChanges()方法区别
今天我遇到一个题目,是关于AcceptChanges()和RejectChanges()方法的,考虑到可能很多人不清楚这些概念。所以拿出来讲讲。由这个问题我们也深入了解一下这两个方法。为了不在显示略文时显示出代码来,我就在刚开始多打一点字了。呵。。。题目的代码如下: 1private void button1_Click(object sender, System.EventArgs e)
2009-04-18 16:42:00 1419 4
原创 用SqlDataAdapter.Update(DataSet Ds)更新数据库.
一. 用SqlDataAdapter.Update(DataSet Ds)更新数据库.1. DbDataAdapter调用 Update 方法时,DataAdapter 将分析已作出的更改并执行相应的命令(INSERT、UPDATE 或 DELETE)。当 DataAdapter 遇到对 DataRow 的更改时,它将使用 InsertCommand、UpdateCommand 或 De
2009-04-18 16:29:00 11159 3
原创 如何用CruiseControl.Net来进行持续化集成
本文的目的: 本文总结了过去一年中使用CruiseControl.Net来对工作流程进行持续化集成的经验教训,详细地讲述安装,配置,使用CruiseControl.Net的具体步骤,希望通过阅读本文,能理解和掌握使用CruiseControl.Net的基本使用技巧,用工具来改善工作流程和提高工作效率。 什么是持续化集成 首先,我们先搞清楚什么是持续化集成?它对我们的日常
2009-04-15 13:16:00 959
原创 删除DataTable中的重复行
以前合作做一个程序的时候,由于数据库设计原因。让我碰到了一个比较棘手的问题,就是最后我的数据Table里面存在了一行或多行重复行,那么怎么删除这些重复行了。从网上找了许多材料,还是用了一个最笨的办法,把Table的行检索一遍把重复的行删除掉(在微软的社区里也有这样的例子)。最坏的情况时间复杂度为o(行X列)。如果数据量比较小的话,这样的性能还可以忍受。但是数据量大的话。其速度也就不言而喻了。检索
2009-03-13 15:37:00 3843 4
原创 C#中的DataTable怎么获取已删除行的信息
C#的DataTable的行有几种状态:Added:表示行已添加到DataRowCollection,尚未调用DataTable.AcceptChange()Modified:表示行已被修改,尚未调用DataTable.AcceptChange()Deleted:表示行已被删除,Unchanged:自上次调用AcceptChange()之后没有更改的行.Detached:
2009-03-13 15:32:00 1766 1
原创 [ListView.View=List]的垂直滚动条
该问题来自论坛提问,当ListView.View=List时,滚动条只能是水平的,解决这个问题需要子类化ListView处理WndProc消息,通过Windows API函数来设置它的滚动条。 演示代码: view plaincopy to clipboardprint?using System; using System.Drawing;
2009-03-13 15:26:00 544
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人