Visual Studio使用技巧(转)

折叠代码:

1ctrl+M        ctrl+H       :隐藏选中的段落

2ctrl+M        ctrl+M      :展开段落

选择整个字符串:

         在前双引号前双击,或ctrl+单击;

把代码放入工具箱:

         选中一段代码,把代码拖到工具箱的常规选项卡下面,然后可以重命名代码段,以后往代码区域拖入就可以了。

exm:

    /**

     * (C)Neusoft Company

     * Author       :Hexuetao

     * Email        :hexuetao@neusoft.com

     * Description 

     * */

使用剪贴环:

         Ctrl+shift+V     :循环粘贴,直到找到你想要粘贴的内容为止。

复制、剪切、删除、交换一行代码:

         Ctrl+C       :复制当前行;

         Ctrl+X       :剪切当前行;

         Ctrl+L       :删除当前行;

         Alt+shift+T       :交换当前行与下一行的位置;

用表格方式编辑XML

         xml中,右键,查看数据网络。

         这种编辑模式在xml序列化的数据集时非常有用。编辑继承关系更深的xml文件时会产生位置错误的写满了碎片。

视图的切换:

         Ctrl+PgUp Ctrl+PgDn :用于切换html视图和设计视图,xml视图和数据视图

转到定义后的后退、前进:

         使用右键,可以转到定义(方法)。

         Ctrl+_       :后退

         Ctrl+shift+_      :前进(前进需要,使用过鼠标右键的转到定义之后才会有效果)

同一文件中创建分割窗口:

         将同一个文件分成两个窗口显示,这样可以通过第1个窗口看着文件的上半部分,同时通过第2个窗口操作着文件的下半部分。

         通过拖动下图中黑色线圈里面的小小矩形分割块来实现。

将文件拖入VS.Net中打开:

         .txt文件拖入VS.Net中:用记事本打开;

         .doc文件拖入VS.Net中:用word打开;

         将图片拖入VS.Net中:用画图板打开;

         .pdf文件拖入VS.Net中:用Adobe reader代开

内建浏览器的使用:

         使用vs.net内建的浏览器,调试、搜索东西的比较方便,不用再单独去代开浏览器。

         打开方法:ctrl+alt+R

         主页的设置:工具->选项->环境->web浏览器->主页

类视图关系的利用:

         Ctrl+shift+C:打开类视图;

         展开命名空间,在类或成员上,ctrl+c,即可提取该类或成员的完整的命名空间到剪贴板。

自定义调用堆栈:

         堆栈跟踪是vs.net一步步执行程序时对当前方法调用继承关系给出的直观显示。堆栈跟踪会对一个有一个的方法嵌套调用给出记录。堆栈跟踪会将每个方法单独显示为一行,并带有行号和参数值。每一个方法的调用称为堆栈帧。

         堆栈跟踪的一个优点在于你可以双击任意一行跳转到程序中该层调用方法的代码。于是你可以看到程序是如何执行到这一位置的,同事可以看到方法接受的参数值。

         在堆栈窗口中右键,可以对堆栈窗口进行一些自定义。

vs.net与一个运行中的进程链接:

         按下F5对程序调试时,vs.net会对项目进行生成。更好的方式是以调试模式启动程序,即让vs.net与运行的程序之间建立链接,从而进行调试。在vs.net2005中,就是附加到进程这个功能,这种功能对web程序非常有用。你可以首先用外部浏览器打开有问题的页面,填写好必要的表单,然后链接该进程开始调试工作。

         开发ASP.NET的程序,主要是附加到w3p.exe进程。

特定异常才中断:

         Ctrl+alt+E :打开异常中断选择窗口;

特定条件下中断:

         调试-窗口-断点,打开断点窗口,找到相应的断点,右键,条件,即可是指特定的条件。

查看代码定义:

         视图->代码定义窗口。

只需将光标点到相应的类、方法等上面,稍等片刻,即可在代码定义窗口中查看相应类、方法等的集体代码。使用改方式,可以减少大量的转到定义操作。

导入和导出编辑器设置:

         将编辑器设置导出保存下来,下次换了机器可以将保存下来的配置文件导入,从而实现个人设置的保存、移动。

         工具->导入和导出设置,根据提示即可操作。

逐个字符地循环访问字符串:

         字符串的特征是它总是具有字符数组的特征。

         总是可以使用简单foreach循环逐个字符地对一个字符进行循环访问。

Foreach(char c in myString)

{

     //……

}

也可以使用括号中的序数来指定字符串中的第几个字符。

Char myChar=myString[n];

将内联字符串用作对象实例:

         输出一个字符串后,在后面跟一个点号,智能提示会为你显示出字符串变量一样所有可用的方法。

int n = "abcd".Length;

使用中间语言反编译器来查看.net程序:

    中间语言反编译器(ildasm.exe):

C:"Program Files"Microsoft Visual Studio 8"SDK"v2.0"Bin"ildasm.exe

使用该工具能够看到程序集中定义的所有命名空间和类,也可以看到微软中间代码。

ASP.NET web程序进行预编译:

当使用vs.net编译web程序时,所有的code-behind文件会被编译到程序集之内。第一次访问刚刚编译完的网站时,ASP.NET引擎需要再次进行编译,产生明显的延迟,所以需要用工具进行预编译,以消除第一次访问的延迟。

方法一:访问虚拟网址:http://localhost/MyWebApplication/preocmpile.axd

该虚拟网址具有一个http处理机制,它会遍历你的web程序,对所有的页面进行预编译以消除延迟。

方法二:使用aspnet_compiler.exe来自动完成所有预编译工作。

它位于C:"WINDOWS"Microsoft.NET"Framework"v2.0.50727目录下,

使用一下方式运行该工具:

Aspnet_complier v/MyWebApplication

这个命令会对整个程序进行预编译。

web程序设置ASP.NET版本:

    IISà虚拟目录à属性àASP.NET选项卡àASP.NET Version

手动清除系统缓存:

    C:"WINDOWS"Microsoft.NET"Framework"v1.1.4322"gacutil.exe cdl

再次抛出同样的异常:

    如果一个异常要被记入日志,开发者通常会:

try

{

    //

}

catch(Exception ex){

    Log(ex);

Throw(ex);

}

这样的代码是可以的,再次抛出的异常不会被忽略,但:重新抛出异常会是vs.net清空异常堆栈跟踪,也就是说堆栈跟踪属性里面的catch部分只会记录该异常的第一次抛出时间。

要在catch部分正确地抛出同一个异常,使用throw就可以了。

try

{

    //

}

catch(Exception ex){

    Log(ex);

Throw;

}

这样就可以重新抛出异常,且不会在监视过程中清空堆栈跟踪。


我们每天都使用VS.Net进行C/S系统、B/S系统、Smart-Client应用的开发,无论你是熟练的程序员还是刚学.net的新手,都是安装了VS.Net进行开发,但你有没有想过怎样利用工具提供的一些便利功能,来提高我们工作的质量和效率呢。本文收集了VS.Net中一些浅为人知的技巧与功能,希望能对帮助你更好的利用工具。

1.   快速切换选项卡

    在应用的开发中,我们常常会开打多个窗体设计器、类文件与其它类型的文件,文件一多用鼠标切换时通常要进行点击几次,可能通过快捷键Ctrl+Tab或Shift+Ctrl+ Tab进行切换。也可以通过拖拽文件的标题对其进行重新排列。

2.   多文件查看

    在VS.Net中,你可以同时查看两或多个文件,只需在打开选项卡中把想要查看的文件拖至IDE的右边或下边,你就可以垂直或水平平铺的方式查看文档。  
 
 
 

3.   查看同一文档的不同部分

    当需要对同一文档的不同部分代码的时候,我们可以通过拆分代码窗口来查看代码的不同部分。将鼠标移动到代码窗口右上角滚动条的上方,出现双向箭头时向下拖至你想拆分的位置,现在可以通过移动滚动条来查看代码的不同部分。  
   

 
4.   管理重复使用的代码片断

    在编写代码时,有一些常用的代码片断会在不同的项目或解决方案中重复使用,如文件创建说明、数据库连接字串等。可以使用工具箱利用以下方法进行重用:
    选择要复用的代码片断;
    将选择的代码拖到工具箱的常规卡,工具箱在会显示“文本……”(可以右键点 击从菜单中选择重名命名进行改名);
    使用时,在插入代码的位置单击鼠标,然后在工具箱上双击要插入的代码(也可以把代码片断拖至要插入的位置)。
 
 

5.   使用渐进式搜索

    代码的搜索方法,VS.Net可以使用编辑菜单中的“搜索”进行特定字符串的搜索,也可以使用“查找符号”来查找特定的方法或属性,但“渐进式搜索”可能就少有人知了,“渐进式搜索”可以根据你键入的字符中在当前打开的代码中进行查找。使用快捷方式Ctrl+I,在代码窗口出现一个向下的箭头加望远镜图案,IDE下面的状态栏显示“渐进式搜索”字样,键入要查找的字符,自动定位至字符出现的位置,查找下一个字符出现位置可以再按Ctrl+I,上一个字符出现位置可以按Shift+Ctrl+I继续进行查找。
 



6.   枚举容器中的控件,实现控件事件处理

    我们知道,要在应用程序中使用事件,必须提供一个事件处理程序(事件处理方法),这通常用委托来实现。但当想对某个容器中的同类控件的相同事件都实现相同的处理方法时,可能通过枚举容器中的控件并指定相关委托来实现事件的处理。或许你会说,干吗要说得这么复杂,我可以在控件的属性中指定事件处理方法来实现,但当容器中的控件很多,或者在设计过程中加入了新的控件,逐个指定毕竟是很麻烦的一件事。
    如下图所示,在应用中有两个文本框,我想指定两个文本框(用户名与密码)的Enter、Leave与Validating事件,当文本框获得焦点时改变其背景色,当离开时还原为系统文本颜色,并用Validating方法检查文本框内容是否为空,为空时用ErrorProvider显示错误信息。
 
 
    我通过方法AddEventHandler来枚举窗体中的控件,当它是文本框时指定事件的委托,代码如下:
    /// <summary>
        
/// 枚举容器中的控件,并增加文本框的事件处理委托
        
/// </summary>
        
/// <param name="pnl">container</param>

        private void AddEventHandler(Control pnl)
        
{
            
foreach(Control ctrl in pnl.Controls)
            
{
                
if(ctrl is TextBox)
                
{
                    ctrl.Enter
+=new EventHandler(this.txt_Enter);
                    ctrl.Leave
+=new EventHandler(this.txt_Leave);
                    ctrl.TextChanged
+=new EventHandler(this.txt_TextChanged);
                    ctrl.Validating
+=new CancelEventHandler(this.txt_Validating);
                }

                
if(ctrl.HasChildren)
                    AddEventHandler(ctrl);
            }

        }



        
/// <summary>
        
/// 实现文本框的Enter事件处理方法
        
/// </summary>
        
/// <param name="sender"></param>
        
/// <param name="e"></param>

        private void txt_Enter(object sender,System.EventArgs e)
        
{
            TextBox tb
=(TextBox)sender;
            tb.BackColor
=Color.BlanchedAlmond;
        }


        
/// <summary>
        
/// 实现文本框的Leave事件处理方法
        
/// </summary>
        
/// <param name="sender"></param>
        
/// <param name="e"></param>

        private void txt_Leave(object sender,System.EventArgs e)
        
{
            TextBox tb
=(TextBox)sender;
            
            tb.BackColor
=Color.FromKnownColor(KnownColor.Window);
        }


        
/// <summary>
        
/// 实现文本框的Validating事件处理方法
        
/// </summary>
        
/// <param name="sender"></param>
        
/// <param name="e"></param>

        private void txt_Validating(object sender,System.ComponentModel.CancelEventArgs e)
        
{
            TextBox tb
=(TextBox)sender;
            errorProvider1.SetError(tb,
"");
            
if(tb.Text.Length==0)
            
{
                errorProvider1.SetError(tb,
"Please input any text!");
                tb.Focus();
            }

        }

然后在Form1的构造函数中增加AddEventHandler(this)语句:

    public Form1()
        
{
            
//
            
// Windows 窗体设计器支持所必需的
            
//
            InitializeComponent();
        
            AddEventHandler(
this);
        }

程序运行时文本框获得焦点时显示不同的背景色: 
 

失去焦点时如果文本框内容长度为零,显示提示信息:


同样的道理,你可以使用上面的方法对容器中的其它控件指定不同的事件处理方法

 

posted @ 2008-03-29 15:25  罗志威  阅读(1959)  评论(1编辑  收藏  举报