博文
[置顶] 浅析C#的事件处理和自定义事件 (2007-06-15 12:43:00)
摘要:一、了解C#中的预定义事件处理机制
在写代码前我们先来熟悉.net框架中和事件有关的类和委托,了解C#中预定义事件的处理。
EventArgs是包含事件数据的类的基类,用于传递事件的细节。
EventHandler是一个委托声明如下
public delegate void EventHandler( object sender , EventArgs e )
注意这里的参数,前者是一个对象(其实这里传递的是对象的引用,如果是button1的click事件则sender就是button1),后面是包含事件数据的类的基类。
下面我们研究一下Button类看看其中的事件声明(使用WinCV工具查看),以Click事件为例。
public event EventHandler Click;
这里定义了一个EventHandler类型的事件Click
前面的内容都是C#在类库中已经为我们定义好了的。下面我们来看编程时产生的代码。
private void button1_Click(object sender, System.EventArgs e) { ... }
&......
C#多线程参数传递浅析(2007-09-25 12:14:00)
摘要:我们在写Remoting程序或者其他的一些应用程序的时候难免要和线程打交道,.Net使我们很容易就可以创建一个线程,但是它提供的创建线程和启动线程的方法没有明显的提供参数,假如我们要用线程来启动类里面一个带参数的方法该怎么办?下面就简单的介绍如何使用.NET提供的丰富的框架来实现这个功能。为了可以生动详细的介绍整个过程,我建立下面的一个.NET类,它也是要用线程启动的方法的载体。类如下所示:
using System; namespace WindowsApplication1 { /// <summary> /// Summary description for UrlFetcher. /// </summary> public class MyClass{ // for method 1 private string _parameter; public MyClass(string parameter){ this._parameter = parameter; } public void MyMethod1(){ if(this._parameter!=null){ // do something Console.Write(this._parameter); } } // for method 2 public MyClass(){} // this method is private,But it can be public or other private void MyMethod2(string parameter){ // do something Console.Write(parameter); } // Because delegate WaitCallback's parameter Type is object // I will convert it to string. public void MyMethod2(object parameter){ this.MyMethod2((string)parameter); } // for method 3 public string MyMeth......
C#杀掉进程(2007-07-25 11:51:00)
摘要:private void KillProcess(string processName){System.Diagnostics.Process myproc= new System.Diagnostics.Process();//得到所有打开的进程
try { foreach (Process thisproc in Process.GetProcessesByName(processName)) { if(!thisproc.CloseMainWindow()) {thisproc.Kill();} } } catch(Exception Exc) { msg.Text+= "杀死" + processName + "失败!"; }}
直接调用上面方法......
常见日期方法荟萃(2007-07-24 13:46:00)
摘要:一.如何获得当月有多少天int m=System.DateTime.DaysInMonth(System.DateTime.Now.Year,System.DateTime.Now.Month);
二.日期型格式处理通用方法1.在webconfig中配置如下<add key="ShortDatePattern" value="MM-dd-yyyy" /><add key="LongDatePattern" value="dddd-MMMM dd-yyyy" /><add key="ShortTimePattern" value="hh:mm tt" /><add key="LongTimePattern" value="hh:mm tt" />2.在global.asax中protected void Application_BeginRequest(Object sender, EventArgs e){Thread currentThread = Thread.CurrentThread;CultureInfo cul = currentThread.CurrentCulture.Clone() as CultureInfo;cul.DateTimeFormat.ShortDatePattern= BLLFacade.Common.GetShortDatePattern();cul.DateTimeFormat.LongDatePattern= BLLFacade.Common.GetLongDatePattern();cul.DateTimeFormat.ShortTimePattern= BLLFacade.Common.GetShortTimePattern();cul.DateTimeFormat.LongTimePattern= BLLFacade.Common.GetLongTimePattern();currentThread.CurrentCulture = cul;}
3.在业务逻辑层中public static string GetShortDatePattern(){return System.Configuration.ConfigurationSettings.AppSettings[......
ASP.NET2.0服务器控件之Render方法(2007-06-12 15:09:00)
摘要:控件呈现是指向HTTP输出流中写入标记文本的过程。服务器通过HTTP输出流向客户端发送生成的标记文本,这些文本将会通过客户端浏览器转换为可视化的元素显示出来。使用控件呈现,开发人员可以将HTML标记、脚本代码、CSS样式表等等输入到客户端浏览器。实现服务器控件呈现主要有两种方式:一是Control类的Render方法,二是WebControl的RenderContents方法。本文重点介绍使用Control类的Render方法实现控件呈现的应用。 使用HtmlTextWriter类 Control类的Render方法主要用于实现控件呈现,其声明代码如下:
protected virtual void Render(HtmlTextWriter output)
如上代码所示,Render方法的参数是一个HtmlTextWriter类型。为了更好的应用Render方法,读者应首先了解HtmlTextWriter类及其相关内容。 根据MSDN2005的描述,HtmlTextWriter类用于将标记字符和文本写入到ASP.NET服务器控件输出流。此类提供了ASP.NET服务器控件在向客户端呈现标记时所使用的格式设置功能。为了实现类的功能,HtmlTextWriter类定义了多个字段、属性和方法。由于成员对象众多,本文只挑选了一些常用成员加以说明,同时,还将介绍一些ASP.NET 2.0的新增成员。 常用成员对象包括: ·AddAttribute方法 对于HtmlTextWriter对象通过对RenderBeginTag方法的后续调用创建的元素,向其开始标记中添加指定的标记属性和值。 ·AddStyleAttribute方法 对于 HtmlTextWriter 对象通过对 RenderBeginTag 方法的后续调用创建的元素,向其开始标记中添加标记样式属性。 ·Write方法 将指定数据类型连同任何挂起的制表符间距一起写入到输出流。 ·WriteAttribute方法 将标记属性及其值写入到输出流。 ·WriteBeginTag方法 任何制表符间距和指定标记元素的开始标记写入到输出流。 ·WriteEndTag方法 写入指定的标记元素的任何制表符间距和结束标记。 ·Encoding属性 获取 HtmlTextWrite......
