我的C#编程随笔
1、关于变量的作用域问题,为什么在程序的有些部分,无法使用相应的控件?
2、要得到combox的文本值,调用其text属性即可。
3、this.dataGridView1.CurrentCell.RowIndex;得到当前 dataGridView 1.处于活动状态的单元.获取单元格父行的索引
4、 int MaxValue = Convert.ToInt32(new OleDbCommand("select Count(*) from 流量测量方法",conn).ExecuteScalar());//得到Access记录表的行数
5、Arraylist对象使用之前也要初始化,尤其注意的是Arraylist数组声明后,要用new arraylist();初始化。
ArrayList[] strFlowMethod = new ArrayList[10];
for (i = 0; i < 10; i++)
{
strFlowMethod[i] = new ArrayList();
}
6、对一个用构造方法创建的新的空的Arraylist对象使用insert方法,会出现异常,提示index有问题,只能使用Add方法,往其中添加Object对象,使用的时候要进行拆箱操作。
7、鼠标光标出现了很难看的阴影,隐约记得这是由编辑模式引起的,按一下键盘上的Insert光标即可恢复正常了。
8、辅助线程用于执行耗时的或时间要求紧迫的任务,使其不占用主线程。例如,服务器应用程序中,桌面应用程序执行后台操作良药引用System.Threading命名空间。
9、HANDLE(句柄)是windows操作系统中的一个概念。指的是一个核心对象在某一个进程中的唯一索引,而不是指针。由于地址空间的限制,句柄所标识的内容对进程是不可见的,只能由操作系统通过进程句柄列表来进行维护。
10、命名空间对于组织大型项目有很大好处。
11、类库就是DLL形式的程序集。类库和可执行的程序集之间唯一的最大的区别就是类库没有入口而可执行程序集必须有入口,程序集包括可执行的托管应用程序,主要包括窗体程序和控制台程序。
12、微软为解决DLL地狱问题提供了两种解决方法。一是,检查.exe文件所在目录的组件,使该组件可以独立于其他的应用程序所安装和使用的组件。二是,锁定System32目录中随操作系统提供的文件,使这些文件不会再安装应用程序时被无意替换。然后剩下的就是版本控制问题,通过,公共语言运行库使用程序集提供允许同时运行多个版本的软件组件的结构(并行执行)。当然,并行执行只是公共语言运行库提供的多项服务之一。
13、StructLayout(LayoutKind.Sequential)] 是什么意思?
结构体是由若干成员组成的.布局有两种 1.Sequential,顺序布局,比如 struct S1 { int a; int b; } 那么默认情况下在内存里是先排a,再排b 也就是如果能取到a的地址,和b的地址,则相差一个int类型的长度,4字节 [StructLayout(LayoutKind.Sequential)] struct S1 { int a; int b; } 这样和上一个是一样的.因为默认的内存排列就是Sequential,也就是按成员的先后顺序排列. 2.Explicit,精确布局 需要用FieldOffset()设置每个成员的位置 这样就可以实现类似c的公用体的功能 [StructLayout(LayoutKind.Explicit)] struct S1 { [FieldOffset(0)] int a; [FieldOffset(0)] int b; } 这样a和b在内存中地址相同。
14、若要实现C中的宏定义#define,只能用const进行声明变量。
15、若VS没有装在C盘,在运行DOTNETBAR破解文件时,会提示找不到某个exe文件的位置,在C盘中搜索到这个文件,手动添加路径就可以了。
16、DllImport是System.Runtime.InteropServices命名空间下的一个属性类,其功能是提供从非托管DLL导出的函数的必要调用信息。DllImport属性应用于方法,要求最少要提供包含入口点的dll的名称。DllImport会按照顺序自动去寻找的地方: 1、exe所在目录 2、System32目录 3、环境变量目录所以只需要你把引用的DLL 拷贝到这三个目录下就可以不用写路径了。
17、this关键字不能在申明变量的时候用,因为变量申明,在构造函数之前会被编译,所以这时候对象还没有构造好,this关键字当然无效。
18、在调用Show方法后,Show方法后面的代码会立即执行,调用ShowDialog方法后,调用代码被暂停执行,等到调用ShowDialog方法的窗体关系后再继续执行。
19、当窗体显示为模式对话框时,单击“关闭”按钮(窗体右上角带 X 的按钮)会隐藏窗体并将 DialogResult 属性设置DialogResult.Cancel。当用户单击对话框的“关闭”按钮或设置 DialogResult 属性的值时,不会自动调用 Close 方法。而是隐藏该窗体并可重新显示该窗体,而不用创建该对话框的新实例。因为此行为,所以当应用程序不再需要该窗体时,必须调用该窗体的 Dispose 方法。
20、对于窗口实例,事件以如下顺序发生:
● 构造函数
● Load
● Activated
● Closing
● Closed
● Deactivate
前3个事件在初始化过程中发生。根据初始化的类型,可以确定要关联哪个事件。这个类的构造函数在对象的实例化过程中执行。Load事件在对象实例化后,窗体可见之前发生。它与构造函数的区别是窗体的可见性。在引发Load事件时,窗体已存在,但不可见。在构造函数的执行过程中,窗体还不存在,处在实例化过程中。Activated事件在窗体处于可见状态并处于当前状态时发生。
21、C#中目前我还没有找到发送消息的类成员函数,所以只能采用通过调用WIN 32 API 的 SendMessage() 函数实现。由于 SendMessage的参数中需要得到窗体的句柄(handler) ,所以又要调用另一个API FindWindow(), 两者配合使用,达到在不同窗体之间的消息发送和接收功能。另外一个要点是,需要通过重写(Override) 窗体的 DefWndProc() 过程来接收自定义的消息。SendMessage()函数将指定的消息发送到一个或多个窗口。此函数为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回。而和函数PostMessage不同,PostMessage是将一个消息寄送到一个线程的消息队列后就立即返回。
22、用sendMessage()和postMessage()函数定义消息,然后重写WndProc()方法,实现对消息的处理。
23、反射机制就是用户可以在程序运行时获得正在被使用的类的属性和方法。如果只知道方法名和属性名,也可以通过反射机制寻找对应的类。
24、可视控件包含一个Parent属性,该属性表示控件的父对象。一般将此属性设置为一个窗口,通过该属性可以控制所属窗体。
25、关于单元测试。结构化编程语言中,要进行测试的单元一般是函数或子过程。面向对象的语言中,要进行测试的基本单元是类。经常与单元测试联系起来的另外一些开发活动包括代码走读(Code review)、静态分析(Static Analysis)和动态分析(Dynamic analysis)。单元测试工具有NUnit等。
26、XML是一套定义语义标记的规则。在XML中只提供了一个标准,利用这个标准,程序员可以自己定义标记,并且为标记添加相应的属性和方法等。即XML是一种元标记语言,它允许程序员根据自己的标准制定新的标记语言。HTML即为一种标记语言,它提供了一组已经定义好的标记,这些标记有固定的意义和属性。
与HTML三个不同点:XML是被设计用来描述数据的,HTML被设计用来显示数据。XML用于数据交换。XML可以从HTML中分离数据。
DTD(document type definition)是XML1.0版规格的一部分,是XML文件的验证机制。定义好后,使用相关工具如编辑工具XML Spy或验证工具XML validate就可以对编好的XML进行DTD检查。DTD指定内容为:可存在的元素,元素的属性,元素的层次结构,以及元素出现的顺序。所以,这样看来,XML给用户提供了一个数据交换的格式,而DTD正是使其得以实现的标准。而XML Schemas可能替代DTD。
.NET中操作XML有两种方法,一是使用MSXML,二是使用System.Xml。
ADO.NET是.NET框架中的数据处理技术,它同样支持与XML的操作与互换,可以将DataSet的内容输入到XML流或者XML文档,也可以将XML流或文档数据填充到DataSet。断开式连接是ADO.NET的最关键技术。
27、对于C#访问注册表的LocalMachine基项里的子项被拒绝,解决方法有:1、用管理员权限运行VS。2、写入User基项里的子项。
28、CRC校验原理 http://blog.sina.com.cn/s/blog_5d2412000100cp3y.html
VC中为对话框添加背景图片 http://www.oschina.net/code/snippet_4873_3702
VC中动态改变控件和对话框字体(大小) http://www.cppblog.com/mzty/archive/2009/04/12/15131.html
VC中自动改变控件位置和大小的对话框类 http://wenku.baidu.com/view/e5d96308763231126edb1112.html
如何获得控件的rect区域 http://topic.csdn.net/u/20090731/11/d4eff36c-e964-41b9-94d6-988e8628549a.html
自绘按钮 http://wenku.baidu.com/view/61eff5addd3383c4bb4cd294.html
CBitmapButton实现图形按钮 http://www.cnblogs.com/Hisin/archive/2012/02/27/2370636.html
问题一:jpgShowCtl.ocx 注册之后,为什么控件工具栏里没有该控件?
jpg图片显示控件的使用http://home.51.com/6638458/diary/item/10050951.html
WMP控件在VC++6.0中怎么用啊http://zhidao.baidu.com/question/217349894.html
图像列表控制(CImageList) http://blog.sina.com.cn/s/blog_69b9bb050100ldih.html
GetNextItem http://baike.baidu.com/view/2460797.htm
VC6.0中使用ADO操作Access数据库 http://szutoto.blog.sohu.com/9979141.html
VC ADO库定义文(关键文章) http://www.cnblogs.com/cy163/archive/2007/04/05/700597.html
mfc连接数据库 http://wenku.baidu.com/view/ad0b15efaeaad1f346933fdc.html
MoveWindow下出现Debug Assertion Failed!----例2_55备注 http://hi.baidu.com/vc_net/item/82e10f0c4a1e776dd55a113f
如何修改VC项目名 http://www.qnr.cn/pc/erji/cpp/ziliao/200812/106191.html
建立了一个基于对话框的应用程序 怎么加 Splash screen组件 http://topic.csdn.net/t/20040417/16/2977486.html
VC++对话框的应用程序的菜单操作 http://wenku.baidu.com/view/fd0a8b8102d276a200292e3c.html
程序设计利用VC调用动态链接库中的函数 http://edu.gamfe.com/tutor/d/11858.html
MFCGridCtrl控件_使用心得 http://wenku.baidu.com/view/24ded8a7284ac850ad024225.html
CGridCtrl学习指南 http://lizhilin.happy.blog.163.com/blog/static/21769242200822911559438/
GridCtrl使用详解 http://blog.csdn.net/incwar/article/details/3807283
MSComm控件使用详解 http://www.gjwtech.com/scomm/scmscomm.htm
MSComm控件应用 http://apps.hi.baidu.com/share/detail/24376149
VC MFC串口通信编程详解 http://wenku.baidu.com/view/b61aafc25fbfc77da269b1ff.html
mfc背景图片设置 http://wenku.baidu.com/view/ce25604df7ec4afe04a1dfe6.html
IDispatch接口原理与应用 http://blog.csdn.net/sheismylife/article/details/463031
INI文件的操作 http://www.cppblog.com/yishanhante/articles/19546.html
将信息写入ini文件? http://topic.csdn.net/t/20021022/08/1113602.html
深入分析:怎样从一个对话框弹出单文档视图 http://blog.csdn.net/zhanghefu/article/details/2564033
MFC中,将当前视图中的图像保存为bmp格式的文件 http://hi.baidu.com/woshimajia1988/item/95ff1d19085a9b737a5f251b
浙公网安备 33010602011771号