博文

[置顶] 浅析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)        {            ...        }   &......

阅读全文(3059) | 评论:1

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......

阅读全文(2474) | 评论:0

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 + "失败!";       }} 直接调用上面方法......

阅读全文(4862) | 评论:0

常见日期方法荟萃(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[......

阅读全文(2198) | 评论:0

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......

阅读全文(2628) | 评论:1