跟小D每日学口语

08 2012 档案

摘要:做了几次。每次都忘记。所以记录下来。测试环境如下:Windows 7Visual Studio 2010[csharp]view plaincopy//建立一个函数privatevoidcallOnClick(Buttonbtn){//建立一个类型Typet=typeof(Button);//参数对象object[]p=newobject[1];//产生方法MethodInfom=t.GetMethod("OnClick",BindingFlags.NonPublic|BindingFlags.Instance);//参数赋值。传入函数p[0]=EventArgs.Empt 阅读全文
posted @ 2012-08-30 10:12 Danny Chen 阅读(7208) 评论(0) 推荐(0) 编辑
摘要:On开头的方法都是引发事件的方法,至于你所说的为什么click事件先被触发,是因为你在OnClick方法中的base.OnClick(e);后做了断点,你应该把断点放在base.OnClick(e);前因为base.OnClick(e)会引发click事件。Click事件是由OnClick(虚)方法引发。 阅读全文
posted @ 2012-08-30 10:09 Danny Chen 阅读(2752) 评论(0) 推荐(0) 编辑
摘要:[日期:2005-01-22]来源:博客堂 作者:破宝[字体:大 中 小]目录属性样式的事件声明单播事件和多播事件支持多播事件的改进属性样式的事件声明在第一节中,我们讨论了 .NET 事件模型的基本实现方式。这一部分我们将学习 C# 语言提供的高级实现方式:使用 add/remove 访问器声明事件。(注:本节内容不适用于 VB.NET。)我们再来看看上一节中我们声明事件的格式: public event [委托类型] [事件名称];这种声明方法,类似于类中的字段(field)。无论是否有事件处理程序挂接,它都会占用一定的内存空间。一般情况中,这样的内存消耗或许是微不足 道的;然... 阅读全文
posted @ 2012-08-30 00:30 Danny Chen 阅读(208) 评论(0) 推荐(0) 编辑
摘要:通过前两节的学习,你已经掌握了 .NET 事件模型的原理和实现方式。这一节我将介绍两个替代方案,这些方案并不是推荐采用的,请尽量采用事件模型去实现。另外,在本节末尾,有一段适合熟悉 Java 语言的读者阅读,讨论了 .NET 和 Java 在“事件模型”方面的差异。目录使用接口实现回调.NET 事件模型和 Java 事件模型的对比使用接口实现回调事件模型其实是回调函数的一种特例。像前面的例子,Form1 调用了 Worker,Worker 反过来(通过事件模型)让 Form1 改变了状态栏的信息。这个操作就属于回调的一种。在“.NET Framework 类库设计指南”中提到了:“委托、接口和 阅读全文
posted @ 2012-08-30 00:30 Danny Chen 阅读(193) 评论(0) 推荐(0) 编辑
摘要:目录事件、事件处理程序概念问题描述:一个需要较长时间才能完成的任务高耦合的实现事件模型的解决方案,简单易懂的 VB.NET 版本委托(delegate)简介C# 实现向“.NET Framework 类库设计指南”靠拢,标准实现事件、事件处理程序概念在面向对象理论中,一个对象(类的实例)可以有属性(property,获取或设置对象的状态)、方法(method,对象可以做的动作)等成员外,还有事件(event)。所谓事件,是对象内部状态发生了某些变化、或者对象做某些动作时(或做之前、做之后),向外界发出的通知。打个比方就是,对象“张三”肚子疼了,然后他站在空地上大叫一声“我肚子疼了!”事件就是这 阅读全文
posted @ 2012-08-30 00:28 Danny Chen 阅读(508) 评论(0) 推荐(0) 编辑
摘要:一、了解C#中的预定义事件处理机制在写代码前我们先来熟悉.net框架中和事件有关的类和委托,了解C#中预定义事件的处理。EventArgs是包含事件数据的类的基类,用于传递事件的细节。EventHandler是一个委托声明如下public delegate void EventHandler( object sender , EventArgs e )注意这里的参数,前者是一个对象(其实这里传递的是对象的引用,如果是button1的click事件则sender就是button1),后面是包含事件数据的类的基类。下面我们研究一下Button类看看其中的事件声明(使用WinCV工具查看),以Cli 阅读全文
posted @ 2012-08-30 00:13 Danny Chen 阅读(484) 评论(0) 推荐(0) 编辑
摘要:Predicate 泛型委托表示定义一组条件并确定指定对象是否符合这些条件的方法。此委托由Array和List类的几种方法使用,用于在集合中搜索元素。看看下面它的定义://Summary://Representsthemethodthatdefinesasetofcriteriaanddetermineswhether//thespecifiedobjectmeetsthosecriteria.////Parameters://obj://Theobjecttocompareagainstthecriteriadefinedwithinthemethodrepresented//bythisd 阅读全文
posted @ 2012-08-29 23:29 Danny Chen 阅读(620) 评论(0) 推荐(0) 编辑
摘要:.net的一个很重要的特性就是跨语言的编程,用C#写的dll可以在VB.net里调用,例如:用C#写的一个类,编译到dll中,然后在VB.net中调用:usingSystem;namespaceCLSsample{publicclassCLSTest{publicCLSTest(){}publicvoidABC(){Console.WriteLine("ABC");}}}在VB.net中调用:DimcAsCLSsample.CLSTest =NewCLSsample.CLSTestc.ABC()现在给dll中的CLSTest类加一个函数:public voidabc(){C 阅读全文
posted @ 2012-08-29 17:12 Danny Chen 阅读(3167) 评论(0) 推荐(1) 编辑
摘要:二.事件的由来在传统的面向对象的概念中是没有“事件”这个概念的。传统的面向对象概念中只有数据(Data,也称为field、域、成员变量)和方法(Method,也就是成员函数、function)。如果我没记错,那么事件这个概念最早出现在微软的COM技术中,又因为VB是基于ActiveX(COM的一种)的,所以“事件”这一概念便通过VB广而推之、为众多程序员所熟知并使用的——我就是其中的一员。.NET Framework实际上是对COM的更高层级的封装——要知道,早先.NET Framework这个名字没有出来之前,它叫“COM3”来着——自然就保留了对事件的支持。三.事件的意义《进化论》说:“物 阅读全文
posted @ 2012-08-28 14:47 Danny Chen 阅读(246) 评论(0) 推荐(0) 编辑
摘要:小序在上篇文章(《深入浅出话委托》)中,我们集中讨论了什么是委托以及委托的用法。有朋友问:什么时候用委托——说实话,使用某种编程要素是一种思想,更是一种习惯。举个极端点的例子:比如你问我“什么时候使用for循环”,我完全可以回答——根本用不着for循环,用if加goto就完全能够搞定——我们大多数人使用for循环,是因为我们认同for循环的思想,并且养成了使用for循环的习惯。委托也是这样——没有委托的日子,程序员们一样在干活,只是有了委托机制后,大家干起来更方便、写出的代码质量更高——当你体验到它的方便、自然而然地使用它、养成一种习惯后,你就知道什么时候应该使用它了。OK,我们回到正题上来, 阅读全文
posted @ 2012-08-28 14:46 Danny Chen 阅读(209) 评论(0) 推荐(0) 编辑
摘要:#region *** CCSimpleEventArgs *** /// <summary> /// A generic class that implements the requisite constructor and property for a custom event args /// class with one data member. /// </summary> /// <typeparam name="T">Single data member for EventArgs</typeparam> [Se 阅读全文
posted @ 2012-08-27 22:49 Danny Chen 阅读(171) 评论(0) 推荐(0) 编辑
摘要:C# 中有两种不同的相等:引用相等和值相等。值相等是大家普遍理解的意义上的相等:它意味着两个对象包含相同的值。例如,两个值为 2 的整数具有值相等性。引用相等意味着要比较的不是两个对象,而是两个对象引用,且两者引用的是同一个对象。这可以通过简单的赋值来实现,如下面的示例所示:C#System.Object a = new System.Object();System.Object b = a;System.Object.ReferenceEquals(a, b); //returns true在上面的代码中,只存在一个对象,但存在对该对象的多个引用:a和b。由于它们引用的是同一个对象,因此具. 阅读全文
posted @ 2012-08-26 22:26 Danny Chen 阅读(705) 评论(0) 推荐(0) 编辑
摘要:using System;namespace CloneFunc{ abstract class Prototype{ string id; public string Id{ get{return this.id;} set{this.id = value;} } public Prototype(string Id){ this.id = Id; } public abstract Prototype C... 阅读全文
posted @ 2012-08-26 22:24 Danny Chen 阅读(268) 评论(0) 推荐(0) 编辑
摘要:c# 图形移动与旋转摘要: 1 、旋转e.Graphics.RotateTransform(30.0F, MatrixOrder.Prepend);2、平移e.Graphics.TranslateTransform(100.0F, 0.0F);3、缩放e.Graphics.ScaleTransform(3.0F, 1.0F, MatrixOrder.Append);4、点坐标变换 e.Graphics.TranslateTr...阅读全文posted @2009-05-18 14:49阿朵 阅读(1319) |评论 (0)编辑C# 设置绘图区的显示区域SetClip摘要: graphics.I 阅读全文
posted @ 2012-08-25 23:11 Danny Chen 阅读(4240) 评论(0) 推荐(0) 编辑
摘要:GDI+与图形编程GDI+的基本概念GDI+的常用对象,包括Graphics、Font、Brush、Pen等对象的创建和使用常用图形的绘制Color结构、Point结构和Rectangle结构1.GDI+的概念GDI+是GDI(Graphics Device Interface,图形设备接口)的改进产品。2.GDI+的绘图命名空间用户所使有的GDI+函数都保存在System.Drawing.d11程序集中。其中包括System.Drawing、System.Drawing.Text、System.Drawing.Printing、System.Drawing.Imaging、System.Dr 阅读全文
posted @ 2012-08-25 21:44 Danny Chen 阅读(964) 评论(0) 推荐(0) 编辑
摘要:现在做.NET Framework的开发的朋友应该是越来越多了,但是可能并非人人都对MSCOREE.DLL非常了解。而事实上,毫不夸张地说,MSCOREE.DLL是.NET Framework中最为核心的DLL之一,没有这个DLL,托管程序根本无法开始执行起来,但是由于这个DLL藏在System32目录下,根本无人问津,可以说是有点委屈了这位.NET Framework中的幕后英雄。本文主要讨论MSCOREE.DLL的几大作用,以及MSCOREE.DLL的兼容性问题。MSCOREE是托管程序的入口点让我们来做一个小实验:首先写一个最最简单的Hello World程序,用csc编译(当然你用VS 阅读全文
posted @ 2012-08-25 19:50 Danny Chen 阅读(728) 评论(0) 推荐(1) 编辑
摘要:名称空间对应的类集Systemmscorlib,SystemSystem.IOmscorlib,SystemSystem.XmlSystem.Data, System.XmlSystem.DataSystem.DataSystem.NetSystemSystem.Reflectionmscorlib,System.Securitymscorlib,System.InteropServicesmscorlib,System.Runtime.Remotingmscorlib,System.Runtime.Serializationmscorlib, 阅读全文
posted @ 2012-08-25 18:57 Danny Chen 阅读(184) 评论(0) 推荐(0) 编辑
摘要:c# code:using System;public class aidd2008{ public static void Main(String[] argv) { int x = 10; int y = 6; if (x > y) { Console.WriteLine(x); } else { Console.WriteLine(y); } Console.Read(); } } MSIL code... 阅读全文
posted @ 2012-08-25 17:19 Danny Chen 阅读(253) 评论(0) 推荐(0) 编辑
摘要:IL文件修改入门篇==================================Object: 掌握简单的IL文件处理知识 能够熟练运用ildasm,ilasm工具==================================1.编写简单的hello.cs2.编译源代码csc hello.cs3.反编译hello.exe,命令如下:ildasm hello.exe /out=hello.il4.打开hello.il文件,找到下面语句IL_0000: ldstr "Hello World!"修改为IL_0000: ldstr "Hello World! 阅读全文
posted @ 2012-08-25 16:04 Danny Chen 阅读(3306) 评论(1) 推荐(0) 编辑
摘要:今天看到一个朋友在override,new上的问题搞错,呵呵我想很多刚入门的朋友也一样吧我呢就查查资料顺便巩固一下自己的理解,现在整理出学习笔记.先看段代码:1usingSystem;2usingSystem.Collections.Generic;3usingSystem.Text;45namespaceConsoleApplication16{7classProgram8{910staticvoidMain(string[]args)11{12baseClassbc;13class1ct1=newclass1();1415class2ct2=newclass2();1617ct1.prin 阅读全文
posted @ 2012-08-25 15:35 Danny Chen 阅读(161) 评论(0) 推荐(0) 编辑
摘要:AppDomain是CLR的运行单元,它可以加载Assembly、创建对象以及执行程序。AppDomain是CLR实现代码隔离的基本机制。每一个AppDomain可以单独运行、停止;每个AppDomain有自己默认的异常处理;一个AppDomain的运行失败不会影响到其他的AppDomain。CLR在被CLR Host(windows shell or InternetExplorer or SQL Server)加载后,要创建一个默认的AppDomain,程序的入口点(Main方法)就是在这个默认的AppDomain中执行。1.AppDomain vs 进程AppDomain被创建在进程中, 阅读全文
posted @ 2012-08-25 13:03 Danny Chen 阅读(369) 评论(0) 推荐(0) 编辑
摘要:.Net框架SDK中提供的IL(Intermediate Language:中间语言)反汇编工具(ILDasm.exe)来查看得到的托管PE文件中的元数据和IL代码。.Net控件的核心就是公共语言运行时 (Common Language Runtime,简称CLR)。CLR在运行时对编程语言是一无所知的,因为我们在开发时所用的编程语言无论使用何种语言都要最终生成一个托管模块 (managed module)。托管模块是一个需要CLR才能执行的标准Windows可移植可执行(portable executable,简称PE)文件。通过查看程序的IL代码和元数据可以了解我们自己编写的代码究竟 都干 阅读全文
posted @ 2012-08-25 11:24 Danny Chen 阅读(1035) 评论(0) 推荐(0) 编辑
摘要:这段时间为跟踪一个Bug而焦头烂额,最后发现是.NET Framework的问题,这让人多少有些绝望。所以到微软论坛提了个帖子,希望能得到些帮助。虽然论坛智能到能够判断楼主是否是MSDN订阅用户,以便尽快解决(传说MSDN订阅用户的问题能在两天内得到回复的,当时还很得意公司为我们购买的MSDN订阅账号),但得到的回复是“Could you file a bug report for this issue through Connect?”,绝望之后的又一次寒心啊。看过payeasy的广告之后,便有了以下的这些内容,如何修改.NET Framework:这里我们以修改Guid类为例,我们将修改这 阅读全文
posted @ 2012-08-25 09:59 Danny Chen 阅读(462) 评论(0) 推荐(0) 编辑
摘要:前些时候看到园子里一位朋友写的.NET 框架AAF(作者:http://blog.csdn.net/aafshzj),作者对其大为赞赏.因为自己在开发过程中碰到一些性能问题,一时不知如何解决,索性就学习下AAF.因为本人对该框架知之甚少,所以就不在此赘言了.早先时候,自己也曾写过Remoting的代码,没有实际应用到项目中去. .NET发展太快了,4.0就有出来了.微软也用新的技术来替代Remoting了,那就是WCF,不过那是后话了.有感于AAF,作者给出Remoting的入门代码,已帮助了解该技术的Programmer.哈哈,不多说了,看例子吧.下边以3个部分来介绍(共享库,服务器端,客户 阅读全文
posted @ 2012-08-23 23:17 Danny Chen 阅读(276) 评论(0) 推荐(0) 编辑
摘要:using System;using System.Threading;namespace ResetEvent{ public class EntryPoint{ static AutoResetEvent auto = new AutoResetEvent(false); static ManualResetEvent manual = new ManualResetEvent(false); static EventWaitHandle eventWait = new EventWaitHandle(false,EventResetMode.AutoReset); public ... 阅读全文
posted @ 2012-08-23 21:16 Danny Chen 阅读(316) 评论(0) 推荐(0) 编辑
摘要:概述:AutoResetEvent和ManualResetEvent从字面意思来讲第一个表示的是自动重置,第二个表示手动重置,它们两都有三个方法Reset(),Set(),WaitOne()。在创建对象的时候有一个bool参数,true表示创建有信号的对象,false表示创建无信号的对象。下面来看一段代码:publicpartialclassForm1:Form{AutoResetEventautoResetEvent =null;ManualResetEventmanualResetEvent =null;publicForm1(){Form.CheckForIllegalCrossThre 阅读全文
posted @ 2012-08-23 20:35 Danny Chen 阅读(243) 评论(0) 推荐(0) 编辑
摘要:AutoResetEvent 就像一个十字转门,每次只允许一个取消阻塞。static AutoResetEvent auto = new AutoResetEvent(false); static void Main(string[] args) { Thread t = new Thread(WaitFoSingalToWrite); t.Start(); Thread.Sleep(2000); auto.Set(); Console.WriteLine("Main End..."); } static void WaitFoSinga... 阅读全文
posted @ 2012-08-23 14:56 Danny Chen 阅读(179) 评论(0) 推荐(0) 编辑
摘要:using System;using System.Collections;using System.Collections.Generic;namespace BuilderFunc{ public class Product{ List<string> arrList = new List<string>(); // First in First Out (FIFO) Queue Q = new Queue(); // Last in First out (LIFO) Stack S = n... 阅读全文
posted @ 2012-08-22 23:35 Danny Chen 阅读(291) 评论(0) 推荐(0) 编辑
摘要:using System;namespace SingletonFunc{ public class Singleton{ private static object obj = new object(); private static Singleton singleton; public static Singleton CreateSingleton() { if(singleton == null){ lock(obj) { ... 阅读全文
posted @ 2012-08-22 22:15 Danny Chen 阅读(320) 评论(0) 推荐(0) 编辑
摘要:using System;namespace AbstractFactoryFunc{ public abstract class AbstractProductA{ public abstract void ProductAMethod(); } public class ProductA1 : AbstractProductA{ public override void ProductAMethod(){ Console.Write(this.ToString() + " : Method!"); C... 阅读全文
posted @ 2012-08-22 21:18 Danny Chen 阅读(196) 评论(0) 推荐(0) 编辑
摘要:Every Control in C# is full of events like MouseButtonDown and KeyDown, but what happens when you want an object to fire an event that isn't already built in? This snippet tutorial will go through all the code required to create your own events and custom event handlers.As an example, I'm go 阅读全文
posted @ 2012-08-22 10:03 Danny Chen 阅读(394) 评论(0) 推荐(0) 编辑
摘要:using System;namespace NotePadTest{ interface IFactor{ IProduct CreateIProduct(); } interface IProduct{ void showMethod(); } class BaseProduct : IProduct{ public void showMethod(){ Console.Write(this.ToString()); Console.Read(); ... 阅读全文
posted @ 2012-08-22 09:29 Danny Chen 阅读(385) 评论(0) 推荐(0) 编辑
摘要:See alsocopy (command)XCOPYList of DOS commandsrsyncSyncToyRichCopyhobocopy 阅读全文
posted @ 2012-08-22 09:26 Danny Chen 阅读(146) 评论(0) 推荐(0) 编辑
摘要:版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://glorywine.blogbus.com/logs/35919064.html 以前项目管理使用的是CVS和SVN, 这两个算得上是老牌的项目管理工具了. 现今, 又多了Git, Mercurial和Bazaar这些管理工具. 自己平时没事的时候会写些程序, 因为有几台机器, 所以需要一个代码仓库来进行项目管理. 在网上google了一下, 发现了github, 非常不错, 一般的用户可以创建N个项目, 只要总容量不超过300M就行, 对于我来说够用了. 在这里记录一下github的使用方法, 以后方便查阅. 至于 阅读全文
posted @ 2012-08-20 13:36 Danny Chen 阅读(367) 评论(0) 推荐(0) 编辑
摘要:在Invoke或者BeginInvoke的使用中无一例外地使用了委托Delegate。一、为什么Control类提供了Invoke和BeginInvoke机制?关于这个问题的最主要的原因已经是dotnet程序员众所周知的,我在此费点笔墨再次记录到自己的日志,以便日后提醒一下自己。1、windows程序消息机制Windows GUI程序是基于消息机制的,有个主线程维护着一个消息泵。这个消息泵让windows程序生生不息。Windows GUI程序的消息循环Windows程序有个消息队列,窗体上的所有消息是这个队列里面消息的最主要来源。这里的while循环使用了GetMessage()这个方法,这 阅读全文
posted @ 2012-08-20 13:00 Danny Chen 阅读(6759) 评论(0) 推荐(0) 编辑
摘要:If you use multithreading to improve the performance your Windows Forms applications, you must be careful to make calls to your controls in a thread-safe way.ExampleAccess to Windows Forms controls is not inherently thread safe. If you have two or more threads manipulating the state of a control, it 阅读全文
posted @ 2012-08-20 11:01 Danny Chen 阅读(208) 评论(0) 推荐(0) 编辑
摘要:在开发应用中,我们经常用枚举来简化程序。但是让人头的是总得枚举一个别名Alias用于显示或者描述该枚举值,这时候如果我们采用if或者switch的方法来进行判读也可以,但是有点不够优雅。下面来给大家分享一下我的实现方法。今天同事把博客园里的一片文章发给我说和我之前推荐给大家的方法思路基本一样。看后感觉非常不错,于是兴起把我的思路也发布出来与大家一起分享一下。(欢迎一起交流)首先应该想到的是Attribute(在编译期初始化,用于给对象附加信息),这才是他的本职工作。首先我们就可以想到System.ComponentModel命名空间下的DescriptionAttribute,用它来担当记录描 阅读全文
posted @ 2012-08-20 10:47 Danny Chen 阅读(434) 评论(0) 推荐(0) 编辑
摘要:扩展方法C# code///<summary>/// 根据字符串返回对应枚举类型 ///</summary>///<typeparam name="T">对应枚举类型</typeparam>///<param name="source">字符串</param>///<returns></returns>publicstatic T GetEnumByValue<T>(thisstring source) { if (typeof(T).BaseTy 阅读全文
posted @ 2012-08-20 10:45 Danny Chen 阅读(213) 评论(0) 推荐(0) 编辑
摘要:上一篇文章为自定义类实现了foreach的功能,但实现过程中要实现IEnumerator接口(包括MoveNext、Reset函数和Current属性)以便GetEnumerator函数能获取枚举数,有点复杂,有点繁琐。已经知道:主要一个类实现了GetEnumerator函数就能foreach,而实现IEnumerator接口只是实现 GetEnumerator函数的其中一个办法,也就说还有其他办法实现GetEnumerator函数了?是的,C#2.0为我们提供了一种很简单的方 法来实现GetEnumerator函数,那就是使用迭代器!(还记得吧,C#里的迭代器和C++里的是不同的)下面是来自 阅读全文
posted @ 2012-08-19 21:39 Danny Chen 阅读(1118) 评论(0) 推荐(1) 编辑
摘要:1.为什么需要自定义节点为了增加应用程序的可移植性,通常网站需要配置一些自定义的节点,例如:文件上传的路径等,再深入的应用,可以定义工厂方法需要创建的类。2.configSections使用方法configSections节点下定义自定义节点可以帮我们实现我们自己的节点。首先定义自己的节点,定义方法如下:<configSections><sectionGroupname="sectiongroupname"><sectionname="sectionname"type="configurationsectionha 阅读全文
posted @ 2012-08-19 13:57 Danny Chen 阅读(143) 评论(0) 推荐(0) 编辑
摘要:App.Config详解应用程序配置文件是标准的 XML 文件,XML 标记和属性是区分大小写的。它是可以按需要更改的,开发人员可以使用配置文件来更改设置,而不必重编译应用程序。配置文件的根节点是configuration。我们经常访问的是appSettings,它是由.Net预定义配置节。我们经常使用的配置文件的架构是象下面的形式。先大概有个印象,通过后面的实例会有一个比较清楚的认识。下面的“配置节”可以理解为进行配置一个XML的节点。1.向项目添加app.config文件:右击项目名称,选择“添加”→“添加新建项”,在出现的“添加新项”对话框中,选择“添加应用程序配置文件”;如果项目以前没 阅读全文
posted @ 2012-08-19 13:26 Danny Chen 阅读(291) 评论(0) 推荐(0) 编辑
摘要:如何创建强命名程序集===================1. 在Visual Studio中的class library工程上点右键, 选择properties.2. 选择左边的Signing选项卡.3. 勾选Sign the assembly复选框. 在下拉列表中选择<New...>.4. 在弹出的对话框中给snk文件起一个名字. 按OK.5. 程序集强命名完成.如何查看强命名程序集的public key token=========================有时候你需要在web.config文件中或者其他地方引用自己写的强命名程序集, 你需要写入像下面这样的fully 阅读全文
posted @ 2012-08-19 13:03 Danny Chen 阅读(193) 评论(0) 推荐(0) 编辑
摘要:项目生成事件 将dll文件拷贝到指定的位置xcopy $(TargetPath) ..\..\..\..\ExecutorsDLL\ /yxcopy $(TargetPath) : 拷贝命令..\..\..\..\ExecutorsDLL\: 目的地路径/y :粘贴命令s 阅读全文
posted @ 2012-08-19 12:15 Danny Chen 阅读(307) 评论(0) 推荐(0) 编辑
摘要:原文:Solution (.Sln) File关于VS2008和VS2010中.sln文件(解决方案文件)的介绍MSDN中只有英文版,现翻译供读者参考,希望对您有帮助。水平有限文中难免有错误,欢迎大家指正,拜谢~解决方案就是Visual Studio中用来组织项目的结构。他的作用类似于VB6.0中的Windows程序组(.vbg)文件以及VC6.0中的项目工作区(.dsw)文件。解决方案将项目的状态信息保存在.sln文件(该文件是基于文本,而且是可共享的)和.suo文件(该文件是二进制的,而且是解决方案中可选的)中。更多关于.suo的信息请查看解决方案中用户可选.suo文件。如果你的VSPac 阅读全文
posted @ 2012-08-19 12:05 Danny Chen 阅读(1244) 评论(0) 推荐(0) 编辑
摘要:在C#中可以对整型运算对象按位进行逻辑运算。按位进行逻辑运算的意义是:依次取被运算对象的每个位,进行逻辑运算,每个位的逻辑运算结果是结果值的每个位。C#支持的位逻辑运算符如表2.9所示。运算符号意义运算对象类型运算结果类型对象数实例~位逻辑非运算整型,字符型整型1~a&位逻辑与运算2a & b|位逻辑或运算2a | b^位逻辑异或运算2a ^ b<<位左移运算2a<<4>>位右移运算2a>>21、位逻辑非运算位逻辑非运算是单目的,只有一个运算对象。位逻辑非运算按位对运算对象的值进行非运算,即:如果某一位等于0,就将其转变为1;如果 阅读全文
posted @ 2012-08-19 00:38 Danny Chen 阅读(286) 评论(0) 推荐(0) 编辑
摘要:Invalidate marks the control (region, or rect) as in need of repainting, butdoesn't immediately repaint (the repaint is triggered when everything else hasbeen taken care of and the app becomes idle).Update causes the control to immediately repaint if any portions have beeninvalidated.Refresh cau 阅读全文
posted @ 2012-08-18 23:13 Danny Chen 阅读(2720) 评论(0) 推荐(0) 编辑
摘要:Control.Invalidate 方法使控件的特定区域无效并向控件发送绘制消息。重载列表使控件的特定区域无效并向控件发送绘制消息。受 .NET Framework 精简版的支持。[C#]public void Invalidate();[C++]public: void Invalidate();使控件的特定区域无效并向控件发送绘制消息。还可以使分配给该控件的子控件无效。[C#]public void Invalidate(bool);使控件的指定区域无效(将其添加到控件的更新区域,下次绘制操作时将重新绘制更新区域),并向控件发送绘制消息。受 .NET Framework 精简版的支持。[ 阅读全文
posted @ 2012-08-18 23:08 Danny Chen 阅读(4825) 评论(0) 推荐(0) 编辑
摘要:很多朋友都会在开发WinForm中遇到Label要显示的内容太长,但却不能换行的问题.这里我总结了几种方法,供大家参考。第一种是把Label的AutoSize属性设为False,手动修改Label的大小.这样的好处是会因内容的长度而自动换行,但是当内容的长度超过所设定的大小时,多出的内容就会无法显示.因此,这种方法适合于基本确定内容长度的时候使用。第二种是把Label的Dock设为FILL,同时将AutoSize属性设为False,这种方法可将上面所说的缺点修正,但是同时Label会将其它控件的位置霸占,影响布局.因此,在使用该方法时,最好给Label加上个Panel或GroupBox控件。第 阅读全文
posted @ 2012-08-17 11:54 Danny Chen 阅读(385) 评论(0) 推荐(0) 编辑
摘要:一、C#委托类委托类似于函数指针,但函数指针只能引用静态方法,而委托既能引用静态方法,也能引用实例方法。委托使用分三步:1、委托声明;2、委托实例化;3、委托调用。例程一:程序代码usingSystem; namespace委托 { delegateintNumOpe(inta,intb);//第一步:委托声明 classClass1 { staticvoidMain(string[]args) { Class1c1=newClass1(); NumOpep1=newNumOpe(c1.Add);//委托实例化,注意参数是要使用的参数名,且不带括号 Console.WriteLine(p1(1 阅读全文
posted @ 2012-08-17 11:37 Danny Chen 阅读(429) 评论(0) 推荐(0) 编辑
摘要:这几天为了什么"评估",搞得莫名的紧张,现在评估组走了,反而开始觉得有点无聊了. 为了完善仿Windows的画板,做了一个很原始的颜色抬取控件.现在将大致的过程介绍下.大家也可以直接下载工程文件. 平台:VS 2005 WINFORM 语言:C# 最终效果图: 光看看图片似乎说明不了什么问题,还是接着往下看吧! 要想在VS 2005 winform 中编辑自定义控件,步骤如下: 1.点击文件->新建项目->选择Windows控件库 2.编辑控件 3.点击生成->生成 项目名称 ,完成这一步后会在bin或debug目录下看到"项目名称.dll"文件,这个便 阅读全文
posted @ 2012-08-17 11:35 Danny Chen 阅读(392) 评论(0) 推荐(0) 编辑
摘要:一般在开发Winform项目中,visual studio提供的控件基本能满足我们的需求。但是,往往在一些情况下,系统提供的控件并不能刚好满足需求,如果完全使用以提供好的控件,也可以完成效果需求,但是可能会造成臃肿和控制的不方便。因此,在项目中开发一些灵活的自定义控件是很有必要的。你可以根据业务需要,量身打造你想要的控件。一般来说,自定义控件可以分成三种类型。1、自定义控件,这是完全需要自己设计,开发的新的控件,一般继承自Control,重写OnPaint方法;还要自己写添加事件、处理消息等等。这样的控件,对应你的业务可以达到很好的效果,功能最灵活。同时对开发人员要求也最高,一般要了解图形绘制 阅读全文
posted @ 2012-08-17 11:30 Danny Chen 阅读(3089) 评论(0) 推荐(0) 编辑
摘要:Visual Studio 2010Other Versions2 out of 2 rated this helpful-Rate this topicAninterfacecan declare anevent. The following example shows how to implement interface events in a class. Basically the rules are the same as when you implement any interface method or property.To implement interface events 阅读全文
posted @ 2012-08-17 10:52 Danny Chen 阅读(628) 评论(0) 推荐(0) 编辑
摘要:目录事件、事件处理程序概念问题描述:一个需要较长时间才能完成的任务高耦合的实现事件模型的解决方案,简单易懂的 VB.NET 版本委托(delegate)简介C# 实现向“.NET Framework 类库设计指南”靠拢,标准实现事件、事件处理程序概念在面向对象理论中,一个对象(类的实例)可以有属性(property,获取或设置对象的状态)、方法(method,对象可以做的动作)等成员外,还有事件(event)。所谓事件,是对象内部状态发生了某些变化、或者对象做某些动作时(或做之前、做之后),向外界发出的通知。打个比方就是,对象“张三”肚子疼了,然后他站在空地上大叫一声“我肚子疼了!”事件就是这 阅读全文
posted @ 2012-08-17 01:08 Danny Chen 阅读(284) 评论(0) 推荐(0) 编辑
摘要:目录属性样式的事件声明单播事件和多播事件支持多播事件的改进属性样式的事件声明在第一节中,我们讨论了 .NET 事件模型的基本实现方式。这一部分我们将学习 C# 语言提供的高级实现方式:使用 add/remove 访问器声明事件。(注:本节内容不适用于 VB.NET。)我们再来看看上一节中我们声明事件的格式: public event [委托类型] [事件名称];这种声明方法,类似于类中的字段(field)。无论是否有事件处理程序挂接,它都会占用一定的内存空间。一般情况中,这样的内存消耗或许是微不足 道的;然而,还是有些时候,内存开销会变得不可接受。比如,类似 System.Win... 阅读全文
posted @ 2012-08-17 01:08 Danny Chen 阅读(178) 评论(0) 推荐(0) 编辑
摘要:一 、概述Windows 窗体控件是可再次使用的组件,它们封装了用户界面功能,并且可以用于客户端 Windows 应用程序。“Windows 窗体”不仅提供了许多现成控件,还提供了自行开发控件的基础结构。可以组合现有控件、扩展现有控件或创作自己的自定义控件。Windows 窗体控件是从 System.Windows.Forms.Control 直接或间接派生的类。以下列表描述了开发 Windows 窗体控件的常见方案:· 组合现有控件来创作一个复合控件。复合控件封装有一个可以作为控件重复使用的用户界面。可视化设计器为创建复合控件提供了有力的支持。要创作一个派生自 System.Win 阅读全文
posted @ 2012-08-17 00:56 Danny Chen 阅读(267) 评论(0) 推荐(0) 编辑
摘要:一般的方法可以写多重载的方法来适应不同的参数。如果实在觉得有很多不确定个数的参数可能会用时,那么可以用一个数组来存放这些参数(相同数据类型的参数)。当然如果是不同类型的参数的话,你可以建立一个struct结构的结构数组在存放不同参数, 只是会影响性能。以下转自MSDN 用params修饰符声明的参数是参数数组。如果形参表包含一个参数数组,则该参数数组必须位于该列表的最后而且它必须是一维数组类型。例如,类型 string[] 和 string[][] 可用作参数数组的类型,但是类型 string[,] 不能。不可能将 params 修饰符与 ref 和 out 修饰符组合... 阅读全文
posted @ 2012-08-16 21:06 Danny Chen 阅读(1838) 评论(0) 推荐(0) 编辑
摘要:一、委托Delegate一般的方法(Method)中,我们的参数总是string,int,DateTime...这些基本的数据类型(或者没有参数),比如[c-sharp]view plaincopypublicvoidHelloWorld(){Console.WriteLine("HelloWorld!");}publicvoidHelloWorld(stringname){Console.WriteLine("Hello,{0}!",name);}但是有些时候,我们希望把一个方法本身当做参数传递给另一个方法,比如myObject.callMethod( 阅读全文
posted @ 2012-08-16 20:34 Danny Chen 阅读(175) 评论(0) 推荐(0) 编辑
摘要:.NET Framework 4Other Versions5 out of 10 rated this helpful-Rate this topicRepresents a non-generic collection of objects that can be individually accessed by index.Namespace:System.CollectionsAssembly:mscorlib(in mscorlib.dll)SyntaxC#C++F#VB[ComVisibleAttribute(true)]public interface IList : IColl 阅读全文
posted @ 2012-08-15 16:57 Danny Chen 阅读(260) 评论(0) 推荐(0) 编辑
摘要:AListcan be searched imperatively. This often involves a foreach-loop. It can be searched instead with theFindmethod: this often uses a lambda expression. Find makes code clearer in some program contexts. It sometimes makes maintenance easier.ExampleInstead of using a foreach-loop with an if stateme 阅读全文
posted @ 2012-08-15 16:56 Danny Chen 阅读(5918) 评论(0) 推荐(0) 编辑
摘要:Lists and arrays implementIList. This interface is an abstraction that allows list types to be used with through a single reference type. With it, we can create a single method to receive an int[] or a List<int>.ExampleFirst, with the IList generic interface, you must specify a type parameter. 阅读全文
posted @ 2012-08-15 16:55 Danny Chen 阅读(1688) 评论(0) 推荐(0) 编辑
摘要:看着下面这两句事件定义及激发忽然有点不明白了,public event EventHandler<ExternalDataEventArgs> Submit;Submit(null, args);貌似该事件定义时只传一个参数args, 但实际激发时要传两个参数, 咋回事捏!其实, 这是误解, 这个EventHandler<ExternalDataEventArgs>是个泛型版的预定义委托, 该委托实际的定义如下:publicdelegatevoidEventHandler<TEventArgs> (Object sender,TEventArgs e)whe 阅读全文
posted @ 2012-08-14 09:40 Danny Chen 阅读(179) 评论(0) 推荐(0) 编辑
摘要:开发语言:C#3.0IDE:Visual Studio 2008本系列教程主要包括如下内容:1. BeginInvoke和EndInvoke方法2. Thread类3.线程池4.线程同步基础5.死锁6.线程同步的7种方法7.如何在线程中访问GUI组件一、线程概述在操作系统中一个进程至少要包含一个线程,然后,在某些时候需要在同一个进程中同时执行多项任务,或是为了提供程序的性能,将要执行的任务分解成多个子任务执行。这就需要在同一个进程中开启多个线程。我们使用C#编写一个应用程序(控制台或桌面程序都可以),然后运行这个程序,并打开windows任务管理器,这时我们就会看到这个应用程序中所含有的线程数 阅读全文
posted @ 2012-08-14 09:37 Danny Chen 阅读(170) 评论(0) 推荐(0) 编辑
摘要:委托的Invoke方法用来进行同步调用。同步调用也可以叫阻塞调用,它将阻塞当前线程,然后执行调用,调用完毕后再继续向下进行。同步调用的例子:using System;using System.Threading;public delegate int AddHandler(int a, int b);public class Foo { static void Main() { Console.WriteLine("**********SyncInvokeTest**************"); AddHandler handler = new AddHandler(Ad 阅读全文
posted @ 2012-08-14 09:05 Danny Chen 阅读(253) 评论(0) 推荐(0) 编辑
摘要:今天查找分布式计算的有关资料,发现Google的三大核心技术MapReduce、GFS和BigTable的论文都已经被翻译成高质量的中文,更巧的是,这三篇中译版的原发地都是CSDN的Blog。其中最新的一篇是张凌云在一个月之前发表的MapReduce论文,最早的一篇是Xu Lei发表于2005年11月的GFS论文。 这三篇论文翻译质量相当高,三位译者作出了非常了不起的、实实在在的贡献,真是应该好好感谢他们! 为了方便大家整理,我把三篇论文的地址统一列在这里:MapReduce:http://blog.csdn.net/active1001/archive/2007/07/02/1675920. 阅读全文
posted @ 2012-08-12 16:40 Danny Chen 阅读(393) 评论(0) 推荐(0) 编辑
摘要:通常C#自定义事件有下面的几个步骤:1、声明一个delegate: (用于事件的类型的定义)如:publicdelegatevoid事件名称EventHandler(objectserder,EventArgse); //事件名称用你的自己的来代替,随后的EventHandler是C#的建议命名规范,当然如果你不想遵守,可以使用任何字符甚至可以不要。如果你想自定义事件的参数EventArgs,你可以从这个类派生你自己的事件参数类,然后在delegate的声明中,用你的参数类替换EventArgs注:要全面了解自定义事件的原理,你需要学习有关delegate的知识。2、在你的类中声明一个事件,并 阅读全文
posted @ 2012-08-08 21:37 Danny Chen 阅读(668) 评论(0) 推荐(0) 编辑
摘要:在windows编程中用到最多的就是控件的时间了,微软给我们很好的方式,把注意力放到事件执行方法的设计和编码上,但是但我们真正弄懂了事件的真正出发执行原理的话,对我们的编程的提高真是非常榜的,例如在windows编程中 如果我单击了一个button按钮触发了button的click事件Button1_Click(){}, 但是有时候我们编程的时候,不但想要触发button的单击事件,我还想要把其他的时间也要调用下来顺序执行,要实现这种方式,除了在方法最后对其他方法的调用,还可以利用将其他需要顺序执行的方法封装到button的click 事件的委托对象中,这样就能够顺序执行毁掉方法列表中的程序了 阅读全文
posted @ 2012-08-08 21:26 Danny Chen 阅读(260) 评论(0) 推荐(0) 编辑
摘要:1、如何获得一个窗口的句柄?例如获取窗口PictureBox控件(其他控件也可以)的句柄,IntPtr handle = pictureBox.Handle;2、注意:窗口创建和窗口创建完毕即有句柄完全是两回事!!!窗口创建时,窗口并没有创建句柄,只有Application.Run(form)或者form.Show()之后才有句柄,即窗口只有显示或者启动消息循环后才有句柄!如果创建form之后Form form = new Form(),主线程中调用form.Handle,如果句柄尚未创建,引用该属性将强制创建句柄,对系统内的逻辑将产生致命的影响。3、如何判断一个窗口的句柄创建完毕?利用IsH 阅读全文
posted @ 2012-08-08 18:53 Danny Chen 阅读(1588) 评论(0) 推荐(0) 编辑
摘要:如何找到桌面上报错的窗口,不管是父窗口还是子窗口,而且获得它的出错信息呢?主要是利用API函数:复制保存[DllImport("user32.dll")]public static extern int FindWindowEx(int hwndParent, int hwndChildAfter, string lpszClass, string lpszWindow);[DllImport("user32.dll")]public static extern int FindWindow(string strclassName, string str 阅读全文
posted @ 2012-08-08 18:51 Danny Chen 阅读(3435) 评论(1) 推荐(0) 编辑
摘要:Application Domain可以看作是一个Assembly的逻辑容器。在程序执行过程中,如果遇到需要的Type并没有定义在已经加载的Assemblies中,CLR会把相应的Assembly加载的该Application Domain中。每个Application Domain都有一个属于自己的加载器堆(Loader Heap),用于维护从Application Domain创建以后所用到的所有的Type,以及这些Type对应的方法表——维护这样一个Mapping:定义在Type中的所有方法和经过JIT编译后x86代码(只考虑32bit处理器)。Application Domain之间是 阅读全文
posted @ 2012-08-03 17:17 Danny Chen 阅读(251) 评论(0) 推荐(0) 编辑
摘要:有一段时间,正则表达式学习很火热很潮流,当时在CSDN一天就能看到好几个正则表达式的帖子,那段时间借助论坛以及Wrox Press出版的《C#字符串和正则表达式参考手册》学习了一些基础的知识,同时也为我在CSDN大概赚了1000分,今天想起来,去找《C#字符串和正则表达式参考手册》时,已经不知所踪了。现在用到正则的时候也比较少,把以前的笔记等整理一下,以志不忘。(1)“@”符号符下两ows表研究室的火热,当晨在“@”虽然并非C#正则表达式的“成员”,但是它经常与C#正则表达式出双入对。“@”表示,跟在它后面的字符串是个“逐字字符串”,不是很好理解,举个例子,以下两个声明是等效的:string 阅读全文
posted @ 2012-08-03 16:42 Danny Chen 阅读(231) 评论(0) 推荐(0) 编辑
摘要:在以前传统的开发中我们都知道,一个应用程序对应一个进程,并为该进程指定虚拟内存,由操作系统来映射实际的物理内存,有效的维护了进程之间的安全性。但另一方面,每一个进程都会消耗一定的系统资源,降低了性能,并且进程间的通信也比较麻烦。在.Net中推出了一个新的概念:应用程序域(AppDomain)。可以理解成很多应用程序域都可以运行在同一个.NET的进程中,可以降低系统消耗,同时不同的域之间互相隔离,在安全性方面有保障。另外对于同一个进程内不同域之间的通信也相对简单一点。应用程序域涉及的内容很多,本文就简要描述以下两个方面:1、如何创建、卸载域2、如何实现域间的通信一、如何创建、卸载域在.NET中提 阅读全文
posted @ 2012-08-01 15:01 Danny Chen 阅读(236) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示