【笔记】使用.net中的Debug与Trace加强调试能力(SamWang)
摘要:最近在读《.NET开发人员调试策略》,书倒是不错,只是翻译的比较差。不过里面介绍的一些调试的心得还不错,有些收获。 下面我就总结下本书中关于Debug和Trace的一些应用,算作一种读书笔记。 粗略概括下关于修改BUG的几种方法:通过调试器调试 顾名思义就是跟踪源代码进行调试,微软还提供了远程调试的功能。通过源代码的方式调试,我们一般会采用以下的几种方法:使用Exception使用MessageBox。使用#if Debug .. #endif使用断言调试:其中有Debug.Assert和Trace.Assert两种,Debug只在Debug模式下有效,Trace则都有效。断言模式...
阅读全文
posted @
2012-05-30 14:25
SamWang
阅读(2209)
推荐(4) 编辑
[转]VS隐藏的快捷键和小功能
摘要:可将代码放入工具箱,类似控件使用。Ctrl+Shift+V:剪贴板循环粘贴。Ctrl+T:变换一个字符,即将字符后移。Ctrl+Shift+T:变换一个词!例如:method("qwe","asd") => method("asd","qwe")Ctrl+L:删除一行。Alt+Shift+T:当前行下移。Ctrl+K、Ctrl+F:格式化选中区域。Ctrl+K、Ctrl+D:格式化整个文档。 Ctrl+J:调用智能提示。Ctrl+Shift+Space:显示参数信息。Ctrl+K、Ctrl+I:显示快速信息。
阅读全文
posted @
2012-05-28 15:27
SamWang
阅读(1492)
推荐(1) 编辑
【分析】浅谈C#中Control的Invoke与BeginInvoke在主副线程中的执行顺序和区别(SamWang)
摘要:今天无意中看到有关Invoke和BeginInvoke的一些资料,不太清楚它们之间的区别。所以花了点时间研究了下。 据msdn中介绍,它们最大的区别就是BeginInvoke属于异步执行的。Control.Invoke 方法 (Delegate) :在拥有此控件的基础窗口句柄的线程上执行指定的委托。Control.BeginInvoke 方法 (Delegate) :在创建控件的基础句柄所在线程上异步执行指定委托。msdn说明:控件上的大多数方法只能从创建控件的线程调用。 如果已经创建控件的句柄,则除了 InvokeRequired 属性以外,控件上还有四个可以从任何线程上安全调用的方法...
阅读全文
posted @
2012-05-25 09:28
SamWang
阅读(27524)
推荐(15) 编辑
【笔记】《编写高质量代码:改善c#程序的157个建议》-第1章 基本语言要素(SamWang)
摘要:**************************************************************************该书在线阅读:编写高质量代码:改善C#程序的157个建议源代码下载:点我下载**************************************************************************第1章 基本语言要素 / 2-------------------------------建议1:正确操作字符串 / 2-------------------------------确保尽量少的装箱避免分配额外的内存空间 注:.
阅读全文
posted @
2012-05-22 17:08
SamWang
阅读(2521)
推荐(5) 编辑
[转]c#各种运算符
摘要:c#主要支持下面所示的运算符:算术运算符 + - * / %逻辑运算符 & | ^ ~ && || !字符串连接运算符 +增量和减量运算符 ++ --移位运算符 << >>比较运算符 == != < > <= >=赋值运算符 = += -= *= /= %= |= ^= <<= >>=成...
阅读全文
posted @
2012-05-22 10:07
SamWang
阅读(7543)
推荐(1) 编辑
[转]C#基元类型、引用类型和值类型以及装箱拆箱
摘要:基元类型(primitive type) ----------------------------------编译器直接支持的类型。 sbyte / byte / short / ushort / int / uint / long / ulongchar / float / double / bool / decimal /object / string 值类型(value type) ------------------------------ 值类型实例分配在堆栈(stack)上,值类型变量本身即包含实例所有字段,值类型不受垃圾回收器控制,在离开作用域后自动释放所占内存。所有值类型都继承
阅读全文
posted @
2012-05-21 14:26
SamWang
阅读(1558)
推荐(0) 编辑
[转]Visual Studio小技巧-使用任务列表(TaskList)
摘要:大家一定都很熟悉错误列表(error list),当我们写的语句有语法错误时,错误信息会列在错误列表(error list)中.双击某个错误,Visual Studio会自动帮我们定位到源代码中相应的地方。任务列表(task list)是错误列表(error list)的孪生兄弟。我们可以通过View –> Task List 打开它。有两种类型的任务: 用户任务(user task)和注释(comment),在任务列表(task list)上部的下拉列表中可以选中查看哪种类型。用户任务(user task): 任务列表上部有个Create User Task的按钮。点击它就可以创建新的
阅读全文
posted @
2012-05-17 14:20
SamWang
阅读(1436)
推荐(0) 编辑
[转]数据结构(C#版)概念整理
摘要:第一章1、数据(Data)数据是外部世界信息的载体,它能够被计算机识别、存储和加工处理,是计算机程序加工的原料。计算机程序处理各种各样的数据,可以是数值数据,如整数、实数或复数;也可以是非数值数据,如字符、文字、图形、图像、声音等。2、数据元素(Data Element)和数据项(Data Item)数据元素是数据的基本单位,在计算机程序中通常被作为一个整体进行考虑和处理。数据元素有时也被称为元素、结点、顶点、记录等。一个数据元素可由若干个数据项(Data Item)组成。数据项是不可分割的、含有独立意义的最小数据单位,数据项有时也称为字段(Field)或域(Domain)。数据项分为两种,一
阅读全文
posted @
2012-05-17 12:40
SamWang
阅读(1168)
推荐(0) 编辑
[转]关于release和debug的区别
摘要:MSDN中的描述:====================================================================Visual Studio 项目对程序的发布和调试版本分别有单独的配置。顾名思义,生成调试版本的目的是用于调试,而生成发布版本的目的是用于版本的最终分发。 如果在 Visual Studio 中创建程序,Visual Studio 将自动创建这些配置并设置适当的默认选项和其他设置。在默认设置下: 程序的“调试”配置用全部符号调试信息编译,不进行优化。(优化会使调试复杂化,因为源代码和生成的指令间的关系更加复杂。) 程序的“发布”配置被完全优化
阅读全文
posted @
2012-05-16 14:20
SamWang
阅读(2212)
推荐(3) 编辑
[转]C# const和static readonly区别
摘要:我们都知道,const和static readonly的确很像:通过类名而不是对象名进行访问,在程序中只读等等。在多数情况下可以混用。二者本质的区别在于,const的值是在编译期间确定的,因此只能在声明时通过常量表达式指定其值。而static readonly是在运行时计算出其值的,所以还可以通过静态构造函数来赋值。明白了这个本质区别,我们就不难看出下面的语句中static readonly和const能否互换了:1. static readonly MyClass myins = new MyClass();2. static readonly MyClass myins = null;3.
阅读全文
posted @
2012-05-16 13:34
SamWang
阅读(11380)
推荐(10) 编辑
【技巧】DataGridView重新绑定时保持上次滚动位置(SamWang)
摘要:问题: 今天在项目时遇到一个问题,将DataTable绑定到DataGridView,其中一列为CheckBox列,当我修改该列值时,触发CellValueChanged事件。当我在此事件中处理它的DataSource时,发现该单元格对应的DataTable的值尽管已经改变,但是它的RowState属于Modified。 当我用DataTable.Select()查询相关数据时,该单元格值竟然还是引用老数据。尽管尝试设置DataViewRowState来查询,结果也是无效(此处可能有我不知道的内容,照理说应该能实现)。 于是采用另外的办法,就是调用DataTable.AcceptChan...
阅读全文
posted @
2012-05-16 11:18
SamWang
阅读(4330)
推荐(2) 编辑
【原创】C# 实现拖拉控件改变位置与大小(SamWang)(附源代码下载)
摘要:前言: 很多时候我们需要在运行时,动态地改变控件的位置以及大小,以获得更好的布局。比如说实际项目中的可自定义的报表、可自定义的单据等诸如此类。它们有个特点就是允许客户或者二次开发人员设计它们需要的界面设置功能。 本人以前也做过可自定义系统,包括界面和功能,主要为了减少开发人员的工作量以及程序的灵活性和健壮性。 本篇主要讨论下,在运行时如何实现拖拉控件,达到改变控件位置与大小。功能将模拟VS设计界面时的拖拉功能。 (本篇暂不涉及多控件同时操作)一、技术概述 其实实现运行时控件的拖拉并不难,主要是改变控件的Location与Size即可。动态调整时再捕获MouseDown、MouseMo...
阅读全文
posted @
2012-05-14 14:54
SamWang
阅读(8915)
推荐(10) 编辑
【类】C# 导入导出Excel通用类(SamWang)
摘要:1 /****************************************************************** 2 * 创 建 人: SamWang 3 * 创建时间: 2012-3-16 9:59 4 * 描 述: 5 * 导入导出Excel通用类 6 * 版 本: V1.0 7 * 环 境: VS2005 8 ******************************************************************/ 9 using Syste...
阅读全文
posted @
2012-05-10 09:15
SamWang
阅读(4415)
推荐(1) 编辑
【类】C#计算器类(SamWang)
摘要:1 /****************************************************************** 2 * 创 建 人: SamWang 3 * 创建时间: 2011-11-29 4 * 描 述: 5 * 计算器类:能直接对表达式进行计算,支持变量 6 * 原 理: 将表达式按字符压入堆栈中,然后按照各操作符的级别进行处理 7 * 版 本: V1.0 8 * 环 境: VS2005 9 *********************************...
阅读全文
posted @
2012-05-09 17:20
SamWang
阅读(1554)
推荐(0) 编辑
【类】C# 文件操作类(SamWang)
摘要:类库: 1 /****************************************************************** 2 * 创 建 人: SamWang 3 * 创建时间: 2012-05-09 4 * 描 述: 5 * C#文件操作类 6 * 内容描述: 1.删除文件夹 7 * 2.移动文件夹 8 * 3.复制文件夹 9 * 版 本: V1.0 (2012-05-09) 10 * 修 改 人: 11 * 修改内...
阅读全文
posted @
2012-05-09 16:59
SamWang
阅读(2115)
推荐(1) 编辑
【整理】C#文件操作大全(SamWang)
摘要:文件与文件夹操作主要用到以下几个类: 1.File类: 提供用于创建、复制、删除、移动和打开文件的静态方法,并协助创建 FileStream 对象。 msdn:http://msdn.microsoft.com/zh-cn/library/system.io.file(v=VS.80).aspx 2.FileInfo类: 提供创建、复制、删除、移动和打开文件的实例方法,并且帮助创建 FileStream 对象 msdn:http://msdn.microsoft.com/zh-cn/library/system.io.fileinfo(v=VS.80).aspx 3....
阅读全文
posted @
2012-05-09 16:47
SamWang
阅读(55636)
推荐(10) 编辑
【功能】C# 控件实现内容拖动(DragDrop)功能(SamWang)
摘要:一、将控件内容拖到其他控件 在开发过程中,经常会有客户要求,拖动一个控件的数据到另外一个控件中。例如将其中一个ListBox中的数据拖到另一个ListBox中。或者将DataGridView中的数据拖动到TreeView的某个节点。 在应用程序中,是通过处理一系列事件,如DragEnter,DragLeave和DragDrop事件来实现在Windows应用程序中的拖放操作的。通过使用这些事件参数中的可用信息,可以轻松实现拖放操作。 拖放操作在代码中是通过三步实现的,首先是启动拖放操作,在需要拖动数据的控件上实现MouseDown事件响应代码,并调用DoDragDrop()方法;其次是...
阅读全文
posted @
2012-05-08 15:33
SamWang
阅读(24530)
推荐(2) 编辑