c# App NOTE-I

----------------------------------------
★ 撤消事件
方法一:使用“ -=  ”撤销事件(预订事件+=)。
  如取消button点击事件:button.Click -= new EventHandler(button_Click);
方法二:使用 e.Cancel (e:EventArgs).
  在一些事件的处理函数里设置:e.Cancel = true;   //取消事件的值
-------------------------------------------------------
★自动关闭对话框(本例为MessageBox())。建立一个时钟(因为模式对话框弹出后

挂起主线程,所以只能通过加入一个时钟,因为时钟会新一个后台线程)
 方法一:调用API函数FindWindow 查找指定标题的窗口(获得窗体句柄)->api函

数PostMessage关闭窗体(向指定句柄窗体发送关闭消息)。
 方法二:模拟回车键(其实就是发送回车键消息)。
C++篇http://blog.csdn.net/ren062/archive/2008/12/09/3484097.aspx
c#篇 http://www.dotblogs.com.tw/puma/archive/2009/02/06/7060.aspx
------------------------------------------------------
★退出程序
Application.Exit()//通知所有消息泵必须终止,并且在处理了消息以后关闭所

有应用程序窗口。
他并不会马上关闭程序,而是在处理完消息后关闭程序
System.Environment.Exit(-1);//直接关闭程序
-----------------------------------------
★字符串的储存长度/字符长度
int n= Encoding.Unicode.GetBytes(str).Length;
    n= System.Text.Encoding.Default.GetByteCount(str);  
按字节算的话,一个汉字占用2个字节,一个字母也是占用2个字节。在.net中,字

符都是用Unicode存储,一个字符都是用2个字节。
例:
  s   =   "i在职";  
  int    len = s.Length;//3  
  byte[]sarr = System.Text.Encoding.Default.GetBytes(s);  
         len = sarr.Length;//5
附-例:
  
-----------------------------------------
★using 的使用

 定义一个范围,将在此范围之外释放一个或多个对象。C# 通过CLR自动释放用于存储不再需要的对象的内存。

内存的释放具有不确定性;一旦 CLR 决定执行垃圾回收,就会释放内存。但是,通常最好尽快释放诸如文件

句柄和网络连接这样的资源。

using语句的本质     
   使用using语句实际上生成的IL代码中是一个try, finally代码块,在finally代码块里释放资源。
  using (Object myObject = new MyObject())
    {
        Console.WriteLine("quit");
    }
   //使用using会自动调用MyObject的Dispose方法. 如果MyObject未实现IDispose接口,

   //则编译时会出错:无法将类型   "MyProjects.MyObject"隐式转换为"System.IDisposable"
   //这种写法可替代
   try{}catch {}finally{ myObject.Dispose();}
-----------------------------------------
★泛型介绍:
System.Collections.Generic 命名空间包含定义泛型集合的接口和类,泛型集合

允许用户创建强类型集合,它能提供比非泛型强类型集合更好的类型安全性和性

能。

Dictionary 泛型类
命名空间:System.Collections.Generic
表示键和值的集合。
KeyValuePair 泛型结构
定义可设置或检索的键/值对
-----------------------------------------
★获取本地计算机屏幕分辨率

------------------------------------------------
★string->16进制数bety
------------------------------------------------
★调用API函数 控制程序运行数目
  
------------------------------------------------
★ 接口 

 interface Itest           //定义接口Itest(以I开头)  可继承一个(或多个)类(或接口)
    {
         string Funciton();   //(签名)声明接口的方法
    }
    类可以实现一个或多个接口
   class Class1: Itest1, Itest2
   {
                              //实现接口的方法     
   }
------
接口的2种实现方式:
1,隐式接口实现--修饰符+方法名

   class Class1: Itest1, Itest2
   {
     //隐式实现
     public string Funciton(); //修饰符+ 接口声明的方法
     {
        //......
     }    
   }
这样既可以通过接口也可以通过类 对象调用 声明的方法
如:    Class1 ob=new Class1();或Itest1  ob=new Class1();
       ob.Funciton();
2,显式接口实现--"接口名.方法名" 不能加方法名
   class Class1: Itest1, Itest2
   {
     //显式实现
     public string Itest1.Funciton(); //"接口名.方法名" 不能加方法名    
     {
        //......
     }
   }
****隐式实现接口 无疑增加了代码的耦合性和违反了面向接口编程的原则。显示实现接口才能禁止客户直接调用实现类。因为隐式现实接口方法的默认访问类型都是public,而显示实现接口方法的设定全是private的。
------------------------------------------------
★DateTime时间类型比较

DateTime TopTime = new DateTime(2010, 1, 1, 15, 36, 05);//时间转换
DateTime LowTime = new DateTime(2004, 3, 1, 20, 16, 35);
DateTime XFtime=Convert.ToDateTime("2010-10-10 10:10:10");
TimeSpan TempTimeSpan = TopTime-LowTime;
ReturnStr = ((int)(ts.TotalSeconds)).ToString() + "秒前";
ReturnStr = ((int)(ts.TotalMinutes)).ToString() + "分钟前";
ReturnStr = ((int)(ts.TotalHours)).ToString() + "小时前";


"相差:"+ TempTimeSpan.Days.ToString() + "天"+ TempTimeSpan.Hours.ToString() + "小时"+

TempTimeSpan.Minutes.ToString() + "分钟" +TempTimeSpan.Seconds.ToString() + "秒";
------------------------------------------------
------------------------------------------------

------------------------------------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值