博文

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

阅读全文(2963) | 评论: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......

阅读全文(2279) | 评论: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 + "失败!";   
   }
} 直接调用上面方法
......

阅读全文(4733) | 评论: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 GetShort......

阅读全文(2064) | 评论: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方法

  将标记属性及其值写入到输出流。

  ......

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