随笔分类 - CSharp Technical
CSharp Technical
摘要:这几天为了什么"评估",搞得莫名的紧张,现在评估组走了,反而开始觉得有点无聊了. 为了完善仿Windows的画板,做了一个很原始的颜色抬取控件.现在将大致的过程介绍下.大家也可以直接下载工程文件. 平台:VS 2005 WINFORM 语言:C# 最终效果图: 光看看图片似乎说明不了什么问题,还是接着往下看吧! 要想在VS 2005 winform 中编辑自定义控件,步骤如下: 1.点击文件->新建项目->选择Windows控件库 2.编辑控件 3.点击生成->生成 项目名称 ,完成这一步后会在bin或debug目录下看到"项目名称.dll"文件,这个便
阅读全文
摘要:一般在开发Winform项目中,visual studio提供的控件基本能满足我们的需求。但是,往往在一些情况下,系统提供的控件并不能刚好满足需求,如果完全使用以提供好的控件,也可以完成效果需求,但是可能会造成臃肿和控制的不方便。因此,在项目中开发一些灵活的自定义控件是很有必要的。你可以根据业务需要,量身打造你想要的控件。一般来说,自定义控件可以分成三种类型。1、自定义控件,这是完全需要自己设计,开发的新的控件,一般继承自Control,重写OnPaint方法;还要自己写添加事件、处理消息等等。这样的控件,对应你的业务可以达到很好的效果,功能最灵活。同时对开发人员要求也最高,一般要了解图形绘制
阅读全文
摘要: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
阅读全文
摘要:目录事件、事件处理程序概念问题描述:一个需要较长时间才能完成的任务高耦合的实现事件模型的解决方案,简单易懂的 VB.NET 版本委托(delegate)简介C# 实现向“.NET Framework 类库设计指南”靠拢,标准实现事件、事件处理程序概念在面向对象理论中,一个对象(类的实例)可以有属性(property,获取或设置对象的状态)、方法(method,对象可以做的动作)等成员外,还有事件(event)。所谓事件,是对象内部状态发生了某些变化、或者对象做某些动作时(或做之前、做之后),向外界发出的通知。打个比方就是,对象“张三”肚子疼了,然后他站在空地上大叫一声“我肚子疼了!”事件就是这
阅读全文
摘要:目录属性样式的事件声明单播事件和多播事件支持多播事件的改进属性样式的事件声明在第一节中,我们讨论了 .NET 事件模型的基本实现方式。这一部分我们将学习 C# 语言提供的高级实现方式:使用 add/remove 访问器声明事件。(注:本节内容不适用于 VB.NET。)我们再来看看上一节中我们声明事件的格式: public event [委托类型] [事件名称];这种声明方法,类似于类中的字段(field)。无论是否有事件处理程序挂接,它都会占用一定的内存空间。一般情况中,这样的内存消耗或许是微不足 道的;然而,还是有些时候,内存开销会变得不可接受。比如,类似 System.Win...
阅读全文
摘要:一 、概述Windows 窗体控件是可再次使用的组件,它们封装了用户界面功能,并且可以用于客户端 Windows 应用程序。“Windows 窗体”不仅提供了许多现成控件,还提供了自行开发控件的基础结构。可以组合现有控件、扩展现有控件或创作自己的自定义控件。Windows 窗体控件是从 System.Windows.Forms.Control 直接或间接派生的类。以下列表描述了开发 Windows 窗体控件的常见方案:· 组合现有控件来创作一个复合控件。复合控件封装有一个可以作为控件重复使用的用户界面。可视化设计器为创建复合控件提供了有力的支持。要创作一个派生自 System.Win
阅读全文
摘要:一般的方法可以写多重载的方法来适应不同的参数。如果实在觉得有很多不确定个数的参数可能会用时,那么可以用一个数组来存放这些参数(相同数据类型的参数)。当然如果是不同类型的参数的话,你可以建立一个struct结构的结构数组在存放不同参数, 只是会影响性能。以下转自MSDN 用params修饰符声明的参数是参数数组。如果形参表包含一个参数数组,则该参数数组必须位于该列表的最后而且它必须是一维数组类型。例如,类型 string[] 和 string[][] 可用作参数数组的类型,但是类型 string[,] 不能。不可能将 params 修饰符与 ref 和 out 修饰符组合...
阅读全文
摘要:一、委托Delegate一般的方法(Method)中,我们的参数总是string,int,DateTime...这些基本的数据类型(或者没有参数),比如[c-sharp]view plaincopypublicvoidHelloWorld(){Console.WriteLine("HelloWorld!");}publicvoidHelloWorld(stringname){Console.WriteLine("Hello,{0}!",name);}但是有些时候,我们希望把一个方法本身当做参数传递给另一个方法,比如myObject.callMethod(
阅读全文
摘要:.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
阅读全文
摘要: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
阅读全文
摘要: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.
阅读全文
摘要:看着下面这两句事件定义及激发忽然有点不明白了,public event EventHandler<ExternalDataEventArgs> Submit;Submit(null, args);貌似该事件定义时只传一个参数args, 但实际激发时要传两个参数, 咋回事捏!其实, 这是误解, 这个EventHandler<ExternalDataEventArgs>是个泛型版的预定义委托, 该委托实际的定义如下:publicdelegatevoidEventHandler<TEventArgs> (Object sender,TEventArgs e)whe
阅读全文
摘要:开发语言:C#3.0IDE:Visual Studio 2008本系列教程主要包括如下内容:1. BeginInvoke和EndInvoke方法2. Thread类3.线程池4.线程同步基础5.死锁6.线程同步的7种方法7.如何在线程中访问GUI组件一、线程概述在操作系统中一个进程至少要包含一个线程,然后,在某些时候需要在同一个进程中同时执行多项任务,或是为了提供程序的性能,将要执行的任务分解成多个子任务执行。这就需要在同一个进程中开启多个线程。我们使用C#编写一个应用程序(控制台或桌面程序都可以),然后运行这个程序,并打开windows任务管理器,这时我们就会看到这个应用程序中所含有的线程数
阅读全文
摘要:委托的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
阅读全文
摘要:通常C#自定义事件有下面的几个步骤:1、声明一个delegate: (用于事件的类型的定义)如:publicdelegatevoid事件名称EventHandler(objectserder,EventArgse); //事件名称用你的自己的来代替,随后的EventHandler是C#的建议命名规范,当然如果你不想遵守,可以使用任何字符甚至可以不要。如果你想自定义事件的参数EventArgs,你可以从这个类派生你自己的事件参数类,然后在delegate的声明中,用你的参数类替换EventArgs注:要全面了解自定义事件的原理,你需要学习有关delegate的知识。2、在你的类中声明一个事件,并
阅读全文
摘要:在windows编程中用到最多的就是控件的时间了,微软给我们很好的方式,把注意力放到事件执行方法的设计和编码上,但是但我们真正弄懂了事件的真正出发执行原理的话,对我们的编程的提高真是非常榜的,例如在windows编程中 如果我单击了一个button按钮触发了button的click事件Button1_Click(){}, 但是有时候我们编程的时候,不但想要触发button的单击事件,我还想要把其他的时间也要调用下来顺序执行,要实现这种方式,除了在方法最后对其他方法的调用,还可以利用将其他需要顺序执行的方法封装到button的click 事件的委托对象中,这样就能够顺序执行毁掉方法列表中的程序了
阅读全文
摘要:1、如何获得一个窗口的句柄?例如获取窗口PictureBox控件(其他控件也可以)的句柄,IntPtr handle = pictureBox.Handle;2、注意:窗口创建和窗口创建完毕即有句柄完全是两回事!!!窗口创建时,窗口并没有创建句柄,只有Application.Run(form)或者form.Show()之后才有句柄,即窗口只有显示或者启动消息循环后才有句柄!如果创建form之后Form form = new Form(),主线程中调用form.Handle,如果句柄尚未创建,引用该属性将强制创建句柄,对系统内的逻辑将产生致命的影响。3、如何判断一个窗口的句柄创建完毕?利用IsH
阅读全文
摘要:如何找到桌面上报错的窗口,不管是父窗口还是子窗口,而且获得它的出错信息呢?主要是利用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
阅读全文
摘要:Application Domain可以看作是一个Assembly的逻辑容器。在程序执行过程中,如果遇到需要的Type并没有定义在已经加载的Assemblies中,CLR会把相应的Assembly加载的该Application Domain中。每个Application Domain都有一个属于自己的加载器堆(Loader Heap),用于维护从Application Domain创建以后所用到的所有的Type,以及这些Type对应的方法表——维护这样一个Mapping:定义在Type中的所有方法和经过JIT编译后x86代码(只考虑32bit处理器)。Application Domain之间是
阅读全文
摘要:有一段时间,正则表达式学习很火热很潮流,当时在CSDN一天就能看到好几个正则表达式的帖子,那段时间借助论坛以及Wrox Press出版的《C#字符串和正则表达式参考手册》学习了一些基础的知识,同时也为我在CSDN大概赚了1000分,今天想起来,去找《C#字符串和正则表达式参考手册》时,已经不知所踪了。现在用到正则的时候也比较少,把以前的笔记等整理一下,以志不忘。(1)“@”符号符下两ows表研究室的火热,当晨在“@”虽然并非C#正则表达式的“成员”,但是它经常与C#正则表达式出双入对。“@”表示,跟在它后面的字符串是个“逐字字符串”,不是很好理解,举个例子,以下两个声明是等效的:string
阅读全文

浙公网安备 33010602011771号