一些很酷的.Net技巧(1)

一. .Net Framework

1.   如何获得系统文件夹

使用 System.Envioment 类的 GetFolderPath 方 法;例如:

Environment.GetFolderPath( Environment.SpecialFolder.Personal )

2.   如何获得正在执行的 exe 文件的路径

1)   使用 Application 类 的 ExecutablePath 属性

2)   System.Reflection.Assembly.GetExecutingAssembly().Location

3.   如何检测操作系统的版本

使用 Envioment OSVersion 属性,例如:

OperatingSystem os = Environment.OSVersion;

MessageBox.Show(os.Version.ToString());

MessageBox.Show(os.Platform.ToString());

4.   如何根据完整的文件名获得文件的文件名部分、

使用 System.IO.Path 类的方法 GetFileName 或 者 GetFileNameWithoutExtension 方法

5.   如何通过文件的全名获得文件的扩展名

使用 System.IO.Path.GetExtension 静态方法

6.   Vb c# 的语法有什么不同 click here

7.   如何获得当前电脑用户名,是否联网,几个显示器,所在域,鼠标有几个键等信息

使用 System.Windows.Forms. SystemInformation 类的静态属性

8.   修饰 Main 方法的 [STAThread] 特性有什么作用

标示当前程序使用单线程的方式运行

9.   如何读取 csv 文件的内容

通过 OdbcConnection 可以创建一个链接到 csv 文件的链接,链接字 符串的格式是: "Driver={Microsoft Text Driver (*.txt;*.csv)};Dbq="+cvs 文件的文件夹路径 +"          Extensions=asc,csv,tab,txt; Persist Security Info=False";

创建连接之后就可以使用 DataAdapter 等存取 csv 文件了。

详细信息见 此处

10. 如何获得磁盘开销信息,代码片断如下,主要是调用 kernel32.dll 中的 GetDiskFreeSpaceEx 外部方法。

 

 

public   sealed   class  DriveInfo
{
    [DllImport(
" kernel32.dll " , EntryPoint  =   " GetDiskFreeSpaceExA " )]
    
private   static   extern   long  GetDiskFreeSpaceEx( string  lpDirectoryName,
        
out   long  lpFreeBytesAvailableToCaller,
        
out   long  lpTotalNumberOfBytes,
        
out   long  lpTotalNumberOfFreeBytes);

    
public   static   long  GetInfo( string  drive,  out   long  available,  out   long  total,  out   long  free)
    
{
        
return  GetDiskFreeSpaceEx(drive,  out  available,  out  total,  out  free);
    }


    
public   static  DriveInfoSystem GetInfo( string  drive)
    
{
        
long  result, available, total, free;
        result 
=  GetDiskFreeSpaceEx(drive,  out  available,  out  total,  out  free);
        
return   new  DriveInfoSystem(drive, result, available, total, free);
    }

}


public   struct  DriveInfoSystem
{
    
public   readonly   string  Drive;
    
public   readonly   long  Result;
    
public   readonly   long  Available;
    
public   readonly   long  Total;
    
public   readonly   long  Free;

    
public  DriveInfoSystem( string  drive,  long  result,  long  available,  long  total,  long  free)
    
{
        
this .Drive  =  drive;
        
this .Result  =  result;
        
this .Available  =  available;
        
this .Total  =  total;
        
this .Free  =  free;
    }

}

 

可以通过

DriveInfoSystem info = DriveInfo.GetInfo("c:"); 来获得指定磁盘的开销情况

 

11 .如何获得不区分大小写的子字符串的索引位置

         1 )通过将两个字符串转换成小写之后使用字符串的 IndexOf 方法:

 

 

string  strParent  =   " The Codeproject site is very informative. " ;

string  strChild  =   " codeproject " ;

//  The line below will return -1 when expected is 4.
int  i  =  strParent.IndexOf(strChild);

//  The line below will return proper index
int  j  =  strParent.ToLower().IndexOf(strChild.ToLower());

 

        2)  

一种更优雅的方法是使用 System.Globalization 命名空间下面的 CompareInfo 类 的 IndexOf 方法:

 

 

using  System.Globalization;

string  strParent  =   " The Codeproject site is very informative. " ;

string  strChild  =   " codeproject " ;
//  We create a object of CompareInfo class for a neutral culture or a culture insensitive object
CompareInfo Compare  =  CultureInfo.InvariantCulture.CompareInfo;

int  i  =  Compare.IndexOf(strParent,strChild,CompareOptions.IgnoreCase);

 

. OOPs

1. 什么是复制构造函数

  我们知道构造函数是用来初始化我们要创建实例的特殊的方法。通常我们要将一个实例赋值给另外一个变 量 c# 只是将引用赋值给了新的变量实质上是对同一个变量的引用,那么我们怎样才可以赋值的同时创建一个全新 的变量而不只是对实例引用的赋值呢?我们可以使用复制构造函数。

我们可以为类创造一个只用一个类型为该类型的参数的构造函 数,如:

 

 

public  Student(Student student)
{
 
this .name  =  student.name;
}

 

使用上面的构造函数我们就可以复制一份新的实例 值,而非赋值同一引用的实例了。

class  Student
{
     
private   string  name;

     
public  Student( string  name)
     
{
         
this .name  =  name;
     }

     
public  Student(Student student)
     
{
         
this .name  =  student.name;
     }


    
public   string  Name 
    
{
       
get  
       
{
              
return  name; 
       }

       
set  
       
{
            name 
=  value; 
       }

    }

}


class  Final

{

    
static   void  Main()

      
{

        Student student 
=   new  Student ( " A " );

        Student NewStudent 
=   new  Student (student);

        student.Name 
=   " B " ;

        System.Console.WriteLine(
" The new student's name is {0} " , NewStudent.Name);

      }


}

 

The new student's name is A.

2 .什么是只读常量

就是静态的只读变量,它通常在静态构造函数中赋值。  

class  Numbers
{
    
public   readonly   int  m;
    
public   static   readonly   int  n;

    
public  Numbers ( int  x)
    
{
       m
= x;
    }


    
static  Numbers ()
    
{
        n
= 100 ;
    }


 }
  // 其中n就是一个只读的常量,对于该类的所有实例他只有一种值,而m则根据实例不同而不同

 

三. VS.Net IDE

1. 2 请看原作

3 .如何改变 region 的颜色

   通 过工具 à 选项 à 环境 à 字体和颜色 à 可折叠文本设置

 

四. WinForm

1 .如何使 winForm 不显示标题栏?

通过设置 form Text 属性为空字符串,设置 ControlBox 属性 为 false

form1.Text = string. Empty;

form1.ControlBox = false;

2 .如何使 winform 的窗体使用 XP 的风格

见原作

3 .如何禁止 form 在工具栏显示

设置 form ShowInTaskbar 属性为 false 即可

4 .如何使程序打开默认 的邮件程序并带有一些参数让用户开始写邮件

         1 )如果是 web 程序:

         <a href=” mailto:email@address1.com,email@address2.com?cc=email@address3.com&Subject=Hello&body=Happy New Year ”>some text</a>

         2) 对于 windows 程序,需要 使用 System.Diagnostics.Process

Process process  =   new  Process();
process.StartInfo.FileName 
=   " mailto:email@address1.com,email@address2.com?subject=Hello&cc=email@address3.com
& bcc = email@address4.com & body = Happy New Year "  ;

process.Start();


5 .如何创建类似 msn 提示窗口

需要获得通过 Screen.GetWorkingArea(this).Width Height )属性获得屏幕的大小,然后使用一个 timer 根据时间改变 窗口的位置

五. Button 控件

1 .如何设置 form 的默认 button (即在 form 上按下回车时触发的 button

         可以设置 form AcceptButton 属 性: form1.AcceptButton = button1;

2. 如何设置 form 的取消 button (即在用户按 下 Esc 键时触发的 button

         可以设置 form CancelButton 属 性: form1.CancelButton = buttonC;

3. 如何通过程序触发 一个 button Click 事件

         Button1.PerformClick

 

六. Combo Box

1 .如何使用可选字体填 充 Combo Box

comboBox1.Items.AddRange (FontFamily.Families);

 

七. TextBox

1 .如何禁用 TextBox 的默认上下文菜单(右键菜单)

textBox1.ContextMenu = new ContextMenu();

2,3 见原作

4 .如何在 TextBox 获得焦点的时候,将焦点放在 textBox 文字的最后

textBox1.SelectionStart = textBox1.Text.Length;

 

原作出处: http://www.codeproject.com/useritems/tips.asp?df=100

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值