1. 怎么判断一个字符串的内容为数字? 
最佳答案是使用正则表达式判断 
string str; 
... 
int i; 
if(str != null && Regex.IsMatch(str,@"^\d+$")) 
 i = int.Parse(str); 

2. 怎样使用WebService传输文件? 
这里有两个办法 
一个是使用byte[]传递,一个是使用WSE附件传递 
前面一个: 
[WebMethod] 
public byte[] GetFileData(string requestFileName) 
{ 
// 这里打开一个文件,返回文件的byte[] 
} 
[WebMethod] 
public void SetFileData(byte[] data) 
{ 
// 这里用data(参数)生成需要的文件 
} 


※※※※※※※※※※※※※※※※※※※※※※※※※※※

如何退出Win Form程序? 
Application.Exit(); 

※※※※※※※※※※※※※※※※※※※※※※※

==============什么是映像? 
所有的 .NET 编译器都产生关于它们所产生的模块中的类型定义的特殊数据。这些特殊数据同模块封装在一起 (随后模块被封装到元件中),可以通过称为映像 的机制来访问。System.Reflection 命名空间中包含向模块或元件询问其类型的类。 
使用映像来访问 .NET 的特殊数据同使用 ITypeLib/ITypeInfo 来访问 COM 中的类型库数据非常相似,而且使用的目的也很相似—例如确定数据类型大小,以便在上下文、进程、机器的边界间调度它们。 
映像还可以被用来动态调用方法 (参见 System.Type.InvokeMember),甚至在运行时动态创建类型 (参见 System.Reflection.Emit.TypeBuilder )。 

=================什么是应用程序域? 
应用程序域 (AppDomain) 可以被看作一个轻型的进程。在一个 Win32 进程中可以存在多个 AppDomain。AppDomain 的主要目的是将应用程序和其它应用程序隔离开来。 
通过使用独立的地址空间,Win32 进程提供隔离性。这种方法很有效,但开销很大并且伸缩性不好。.NET 运行库通过控制对内存的是用来施加 AppDomain 隔离—AppDomain 中的所有内存是由 .NET 运行库来管理的,所以运行库可以确保 AppDomain 之间不能访问彼此的内存。 

※※※※※※※※※※※

在ASP.NET程序中,如何知道用户有没有安装1.0版本的.NET框架?

使用Request.Browser.ClrVersion属性只返回用户安装的最高版本。

使用Request.Browser.GetClrVersions()方法可以做到 


※※※※※※※

在平台互操作中,在C#中union该怎么用?

例子:一个整型或字符的union

[ StructLayout(LayoutKind.Explicit) ] 
public struct MyUnion 
{ 
    [ FieldOffset(0) ] public Int16 val2; 
    [ FieldOffset(0) ] public char val1; 
} 

※※※※※※※※※※※※

新版本下写的程序在旧版本中打不开?

新版本下写的程序在旧版本中打不开?我用vs.net打开别人用他的vs.net写的程序打不开,说是不能打开新版本的程序。 
该怎么解决啊?要重新买新版本的安装盘还是装个补丁?谢谢先!:) 
--------------------------------------------------------------- 

把.csproj和.sln中的 
        ProductVersion = "7.10.XXXX" 
        SchemaVersion = "2.0" 
改成 
        ProductVersion = "7.0.9466" 
        SchemaVersion = "1.0" 
就可以了。 
--------------------------------------------------------------- 

VS.NET 2003 和 VS.NET 2002 工程和解决方案互换工具免费下载。

http://jsp.mobikom.com/stoyan/vspc/vspc.html 


※※※※※※※

窗体的淡入淡出: 
for(double d=0d; d<=1d; d+=0.2d) 
   { 
    System.Threading.Thread.Sleep(30); 
    Application.DoEvents(); 
    this.Opacity=d; 
    this.Refresh(); 
   } 
※※※※※※※※※※※ 

下面这几段是关于DataGrid中人们经常问到的问题: 
1、怎样将 ComboBox 控件添加到 Windows 窗体 DataGrid 控件? 
2、怎样将 DataGrid 列宽设置为最长的字段? 
3、怎样对 DataGrid Windows 控件执行分页? 
其中,这几题的答案其实在Microsoft的网站上都可以找到标准答案。为了大家少送点分,共享出来给大家吧。 
1、http://support.microsoft.com/default.aspx 
2、http://support.microsoft.com/default.aspx 
3、http://support.microsoft.com/default.aspx 
其中第三题还有一个是用Visual Basic .NET实现的: 
http://support.microsoft.com/default.aspx 


※※※※※※※※※※※※※※※※※※※※※※※※

还有,关于C#对Excel的操作与控制,其实是非常简单的,但是在CSDN里面,一抓一大巴,可以看一下我以前写的一篇文章:C#调用操作Excel的一个类(http://dev.csdn.net/develop/article/21/21391.shtm) 
如果你想从SQL等类的数据库里面快速导出数据到Excel里面的话,你可以看一下这一篇:通过Excel自带的查询分析器快速完成从SQL Server中导出数据的例子(http://dev.csdn.net/develop/article/22/22183.shtm) 


※※※※※※※※※※※※※※

对多个command对象使用一个事务: 
OleDbConnection cn = new OleDbConnection(联接字符串); 
OleDbCommand comm1 = new OleDbCommand("Sql存储过程",cn ); 
comm1.CommandType = CommandType.StoredProcedure; 

OleDbCommand comm2 = new OleDbCommand("Sql存储过程",cn ); 
comm2.CommandType = CommandType.StoredProcedure; 

OleDbCommand comm3 = new OleDbCommand("Sql存储过程",cn ); 
comm3.CommandType = CommandType.StoredProcedure; 
cn.Open(); 
OleDbTransaction trans = cn.BeginTransaction(); 
comm1.Transaction = trans; 
comm2.Transaction = trans; 
comm3.Transaction = trans; 

try 
{ 
   comm1.ExecuteNonQuery(); 
   comm2.ExecuteNonQuery(); 
   comm3.ExecuteNonQuery(); 
   trans.Commit(); 
} 

catch(Exeeption ex) 
{ 
    trans.RollBack(); 
} 
finally 
{ 
    cn.Close(); 
} 


※※※※※※※※

有的时候,如果在本机上打开了一个相同的程序,可能会对系统的安全有所顾忌。那么,如何实现在同一台机子上,让它不能打开相同的程序呢? 
方法:改写程序启动的函数(main())。 
具体方法: 
  [STAThread] 
  static void Main() 
  { 
            int ProceedingCount = 0; 
            Process[] ProceddingCon = Process.GetProcesses(); 
            foreach(Process IsProcedding in ProceddingCon) 
            { 
                if(IsProcedding.ProcessName == Process.GetCurrentProcess().ProcessName) 
                { 
                    ProceedingCount += 1; 
                } 
            } 
            if(ProceedingCount > 1) 
            { 
                MessageBox.Show("该系统已经在运行中。","提示",MessageBoxButtons.OK,MessageBoxIcon.Information); 
            } 
            else 
            { 
                Application.EnableVisualStyles(); 
                Application.DoEvents(); 
                Application.Run(new [本系统的主界面]()); 
            } 
  } 


※※※※※※※※※※※※※※※

如何构造一个正则表达式,用来匹配含有嵌套的C#块注释,例如:/* ……/*……*/……*/

可以用:/\*.{0,}/\*.{0,}\*/.{0,}\*/ 
用这个RegExp可以匹配的字符串例如: 
   /* adsf/*   /* sdfa */ adfa */         
   /* adsf/*  sdfa */ adfa */   
   kjh   /* adsf  sdfa /**/adfa */       lkj  
不能匹配的例如: 
   /* adsf/*  sdfa adfa */ 
   /* adsf  sdfa adfa */