----------------------------------------
★ 撤消事件
方法一:使用“ -= ”撤销事件(预订事件+=)。
如取消button点击事件:button.Click -= new EventHandler(button_Click);
方法二:使用 e.Cancel (e:EventArgs).
在一些事件的处理函数里设置:e.Cancel = true; //取消事件的值
-------------------------------------------------------
★自动关闭对话框(本例为MessageBox())。建立一个时钟(因为模式对话框弹出后
挂起主线程,所以只能通过加入一个时钟,因为时钟会新一个后台线程)
方法一:调用API函数FindWindow 查找指定标题的窗口(获得窗体句柄)->api函
数PostMessage关闭窗体(向指定句柄窗体发送关闭消息)。
方法二:模拟回车键(其实就是发送回车键消息)。
C++篇http://blog.youkuaiyun.com/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() + "秒";
------------------------------------------------
------------------------------------------------
★
------------------------------------------------
★
★
★
★
★
★
★
★
★