第1篇 鼠标与键盘控制篇 2
第1章 鼠标操作控制 2
1.1获取鼠标信息 3
实例001获取鼠标双击时间间隔 3
实例002获取光标闪烁的频率 4
实例003获取鼠标键数 4
实例004显示鼠标的等待光标 5
实例005获得鼠标在窗体上的位置 6
实例006记录鼠标行为 7
实例007通过截取系统消息判断鼠标的单击键 8
1.2鼠标基本设置 10
实例008定义鼠标指针形状 10
实例009自定义鼠标的图片 11
实例010自定义动画鼠标 12
实例011交换鼠标左右键功能 14
实例012限制鼠标在某一区域工作 15
实例013屏蔽鼠标按键 16
实例014鼠标设置器 21
1.3鼠标操作在实际中的应用 24
实例015隐藏和显示鼠标 24
实例016鼠标双击窗体时模拟键盘Tab键操作 25
实例017使用鼠标拖放复制文本 26
实例018利用鼠标绘图 27
实例019模拟鼠标操作 28
实例020 实现鼠标穿透窗体 30
第2章 键盘操作控制 32
2.1获取键盘信息 33
实例021获取组合键 33
实例022获取功能键 34
实例023判断NumLock键和CapsLock键是否锁定 34
实例024将回车键转换为Tab键 36
2.2键盘热键的设置 37
实例025屏蔽Alt+F4组合键关闭窗体 37
实例 026实现按下Esc键关闭窗体 38
实例027屏蔽系统的Ctrl+C/XN组合键 39
实例028避免按回车键产生“嘀”声 40
实例029设置/屏蔽系统热键 41
2.3键盘操作在实际中的应用 48
实例030打开和关闭输入法编辑器 48
实例031使用键盘控制窗体的移动 49
实例032虚拟键盘操作 51
实例033多功能键盘 60
第2篇Windows系统开发篇 66
第3章 获取系统相关信息 66
3.1获取计算机系统信息 67
实例034获取系统时间 67
实例035获取系统目录 68
实例036获取计算机名称 68
实例037获取当前程序运行目录 69
实例038获得操作系统版本号 70
实例039获取系统启动后经过的时间 71
实例040获取任务栏尺寸 72
实例041改变系统提示信息 73
实例042获取系统环境变量 74
3.2获取计算机硬件信息 76
实例043获取计算机内存信息 76
实例044获取CPU相关信息 78
实例045获取主板相关信息 79
实例046获得硬盘序列号 80
实例047获取所有逻辑分区 81
实例048获取磁盘空间 82
实例049获得磁盘的文件系统类型 83
实例050判断驱动器类型并获取其属性 84
实例051获取显示设备的名称及PNPDeviceID 86
实例052获取声音设备的名称及PNPDeviceID 87
实例053获取屏幕的分辨率 88
实例054获取系统己经安装的打印机信息 89
3.3获取系统网络信息 90
实例055得到本地机器的IP地址 90
实例056检测计算机是否存在网络连接 92
实例057判断计算机的联机状态 92
3.4获取特殊文件夹路径 94
实例058获取系统特殊文件夹路径 94
实例059得到本地运行的EXE的路径 96
实例060获取映射驱动器路径 97
3.5获取Windows当前用户信息 97
实例061获取当前用户 97
实例062判断当前用户是哪种用户 98
3.6获取Windows日志信息 100
实例063获取系统日志信息 100
实例064获取安全日志信息 102
实例065获取应用程序日志信息 103
实例066创建并写入自定义日志信息 104
实例067向系统日志写入自定义数据 105
实例068向应用程序日志写入自定义信息 106
第4章 系统控制应用 107
4.1启动相关 108
实例069进入Windows前发出警告 108
实例070将计算机设置为休眠状态 109
实例071禁止用户关闭计算机 110
实例072实现注销、关闭和重启计算机 111
实例073定时关闭计算机 114
实例074远程关闭与重启计算机 117
4.2磁盘相关设置 120
实例075取消磁盘共享 120
实例076检测磁盘是否准备好 121
实例077图表显示磁盘容量 122
实例078修改磁盘格式 124
实例079格式化磁盘 125
4.3系统设置 126
实例080禁止使用Windows任务管理器 126
实例081为文件新增右键菜单项 127
实例082修改计算机的默认打印机 128
实例083通过注册表设置桌面背景 129
实例084利用API设置桌面背景 130
实例085音乐风景桌面 132
实例086设置系统任务栏时间 135
实例087设置屏幕分辨率 137
实例088修改计算机名称 138
实例089显示器控制 139
实例090屏幕放大镜 141
4.4系统隐藏 143
实例091隐藏、显示任务栏 143
实例092隐藏、显示开始按钮 145
实例093使桌面图标文字透明 146
实例094检索系统中正在运行的任务 147
实例095隐藏、显示桌面图标 148
4.5系统控制 150
实例096切换输入法 150
实例097全角半角转换 151
实例098制作系统挂机锁 154
实例099开机启动项管理 158
实例100启动Windows系统服务 159
实例101执行命令行命令 161
4.6系统监控 162
实例102检测系统启动模式 162
实例103监视剪贴板的内容 163
实例104内存使用状态监控 164
实例105键盘钩子屏蔽热键 165
实例106 CPU使用率 167
第5章 程序控制应用 170
5.1程序控制 171
实例107打开控制面板中的程序 171
实例108动态系统托盘图标 172
实例109控制程序不出现在任务栏上 174
实例110启动屏幕保护 175
实例111使用回车键控制鼠标焦点 176
实例112在TextBox控件中禁用鼠标右键 177
实例113制作屏幕截图程序 178
实例114复制程序本身 180
实例115 分段显示电话号码颜色 181
5.2程序运行 182
实例116使用互斥量禁止程序运行多次 182
实例117使用进程名禁止程序运行多次 183
实例118清空回收站 185
5.3计算机控制 186
实例119设置系统仅能运行的程序 186
实例120获取本地计算机上所有的进程 187
实例121获取远程计算机上所有的进程 189
实例122调用外部的EXE文件 190
实例123关闭外部己开启的程序 191
实例124进程管理器 192
实例125实现行业软件系统注销功能 195
实例126创建应用程序快捷方式 195
实例127使PC喇叭发音 197
第3篇 数据库及LINQ开发篇 200
第6章SQL查询相关技术 200
6.1 SELECT子句 201
实例128查询特定列数据 201
实例129使用列别名 202
实例130在列上加入计算 204
实例131使用函数设置条件 205
6.2查询常量 206
实例132查询数字 206
实例133查询字符串 207
实例134查询日期数据 208
实例135查询逻辑型数据 210
实例136查询空(或NULL)数据 211
6.3查询变量 212
实例137利用变量查询字符串数据 212
实例138利用变量查询数值型数据 214
实例139利用变量查询日期型数据 215
6.4模糊查询 217
实例140利用“_”通配符进行查询 217
实例141利用“%”通配符进行查询 218
实例142利用“”通配符进行查询 219
实例143利用“?”通配符进行查询 221
实例144复杂的模糊查询 222
6.5 TOP和PERCENT限制查询结果 224
实例145查询前10名数据 224
实例146取出数据统计结果的后10名数据 225
实例147查询第10到第20名的数据 226
实例148查询销售量占前50%的图书信息 228
实例149查询库存数量占后20%的图书信息 229
6.6数值查询 231
实例150判断是否为数值 231
实例151在查询时对数值进行取整 232
实例152将查询到的数值四舍五入 233
实例153使用三角函数计算数值 234
实例154求数值的绝对值 235
实例155根据生成的随机数查询记录 236
实例156根据查询数值的符号显示具体文本 238
6.7字符串查询 239
实例157实现字符串的大小写转换 239
实例158返回字符在字符串中出现的次数 240
实例159返回字符串中的子串 241
实例160删除字符串中的子串 243
实例161查找并替换字符串 244
实例162比较两个字符串 246
6.8周期、日期查询 248
实例163判断是否为日期 248
实例164查询指定日期的数据 249
实例165查询指定时间段的数据 250
实例166按年、月或日查询数据 251
实例167返回当前日期时间及其对应的星期 253
实例168查询指定时间间隔的数据 254
6.9比较、逻辑、重复查询 255
实例169利用运算符查询指定条件的数据 255
实例170 NOT与谓词进行组合条件的查询 257
实例171查询时不显示重复记录 258
实例172列出数据中的重复记录和记录条数 259
6.10在查询中使用OR和AND运算符 260
实例173利用OR运算符进行查询 260
实例174利用AND运算符进行查询 261
实例175同时利用ORAND运算符进行查询 262
6.11排序、分组统计 263
实例176数据分组统计(单列) 263
实例177在分组查询中使用ALL关键字 265
实例178在分组查询中使用CUBE运算符 266
实例179在分组查询中使用ROLLUP 267
实例180对数据进行降序查询 268
实例181对数据进行多条件排序 269
实例182对统计结果进行排序 270
实例183按姓氏笔画排序 272
实例184按姓氏拼音排序 273
实例185按仓库分组统计图书库存(多列) 274
实例186多表分组统计 275
实例187使用COMPUTE 276
实例188使用COMPUTE BY 278
6.12聚合函数 279
实例189利用聚合函数SUM对销售额进行汇总 279
实例190利用聚合函数AVG求某班学生的平均年龄 280
实例191利用聚合函数M求销售额、利润最少的商品 281
实例192利用聚合函数MAX求月销售额完成最多的员工 283
实例193利用聚合函数COUNT求日销售额大于某值的商品数 284
实例194利用聚合函数 FIRST或LAST求数据表中第一条或最后一条记录 286
实例195利用聚合函数显示数据库中重复记录的数量 287
实例196查询大于平均值的所有数据 288
实例197获取无重复或者不为空的记录数 290
实例198随机查询求和 291
实例199统计某个值出现的次数 292
6.13多表查询(连接查询) 293
实例200利用FROM子句进行多表查询 293
实例201使用表别名 295
实例202合并多个结果集 296
实例203笛卡儿乘积查询 297
6.14嵌套查询 298
实例204简单嵌套查询 298
实例205复杂嵌套查询 299
实例206嵌套查询在查询统计中的应用 301
6.15子查询 302
实例207用子查询做派生的表 302
实例208用子查询作表达式 304
实例209使用ALL谓词引入子查询 305
实例210使用ANY/SOME谓词引入子查询 307
实例211使用EXISTS运算符引入子查询 308
实例212在HAVING子句中使用子查询过滤数据 310
实例213在UPDATE语句中应用子查询 311
实例214使用子查询删除数据 312
6.16组合语句 314
实例215使用组合查询 314
实例216多表组合查询 316
实例217对组合查询后的结果进行排序 317
实例218获取组合查询中两个结果集的交集 319
实例219获取组合查询中两个结果集的差集 320
6.17内连接查询 321
实例220简单内连接查询 321
实例221复杂内连接查询 322
实例222使用INNER JO实现自身连接 324
实例223使用INNER JO实现等值连接 325
实例224使用INNER JO实现不等连接 326
实例225使用内连接选择一个表与另一个表中行相关的所有行 327
6.18外连接查询 329
实例226 LEFT OUTER JO查询 329
实例227 RIGHT OUTER JO查询 330
实例228使用外连接进行多表联合查询 331
6.19利用进行查询 333
实例229用查询表中的记录信息 333
实例230使用引入子查询限定查询范围 334
实例231使用NOT 运算符引入子查询 335
6.20交叉表查询 336
实例232利用Transform分析数据(Access) 336
实例233利用Transform动态分析数据(Access) 338
实例234静态交叉表(SQL Server 2005) 340
实例235动态交叉表(SQL Server 2005) 342
6.21函数查询 343
实例236在查询语句中使用格式化函数 343
实例237在查询语句中使用字符串函数 344
实例238在查询中使用日期函数 346
6.22索引查询 347
实例239使用UNIQUE关键字创建唯一索引 347
实例240使用CLUSTERED关键字创建聚簇索引 348
实例241使用索引视图查询数据 350
实例242删除索引 352
6.23应用存储过程 353
实例243使用存储过程查询多表中的数据 353
实例244使用存储过程向表中添加数据 355
实例245使用存储过程删除表中的数据 358
6.24 HAVG语句应用 361
实例246利用HAVING子句过滤分组数据 361
实例247 HAVING子句应用在多表查询中 362
第7章SQL高级应用 364
7.1 SQL中的流程控制语句 365
实例248使用BEGINEND语句控制批处理 365
实例249使用IF语句指定执行条件 366
实例250使用IF EXISTS语句检测数据是否存在 367
实例251使用WHILE语句执行循环语句块 368
实例252使用CASE语句执行分支判断 369
实例253使用RETURN语句执行返回 371
实例254使用WAITOF语句延期执行语句 372
实例255使用GOTO语句实现跳转 373
实例256使用TRY CATCH语句进行异常处理 375
实例257使用PRINT语句进行打印 376
实例258使用RAISERROR语句返回错误信息 377
实例259使用SET语句进行选项设置 378
7.2视图的应用 379
实例260在C#中应用视图 379
实例261获取数据库中的全部用户视图 380
实例262通过视图修改数据 380
实例263通过视图过滤数据 382
实例264使用视图格式化检索到的数据 383
实例265对视图定义文本进行加密 384
实例266使用视图生成计算列 385
7.3存储过程的应用 387
实例267 C#中应用存储过程 387
实例268应用存储过程添加数据 388
实例269应用存储过程修改数据 390
实例270应用存储过程删除数据 391
实例271获取数据库中全部的存储过程 392
实例272在存储过程中使用return定义返回值 394
实例273执行带回传参数的存储过程 395
实例274重命名存储过程 396
实例275在存储过程中使用事务 397
实例276加密存储过程 399
实例277查看存储过程的相关信息 400
7.4触发器的应用 401
实例278获取数据库中的触发器 401
实例279使用Insert触发器向薪水表中添加薪水信息 402
实例280 Update触发器在系统日志中的应用 404
实例281使用Delete触发器删除员工薪水信息 405
实例282触发器的嵌套使用 406
实例283使用递归触发器实现每次删除一条记录功能 408
实例284使用触发器删除相关联的两表间的数据 409
7.5事务的使用 411
实例285使用事务同时提交多个数据表 411
实例286使用隐式事务实现多表提交数据 413
实例287使用事务批量删除生产单信息 414
实例288在事务中的表级锁定 417
实例289实现事务的并发控制 420
实例290创建分布式事务 422
7.6游标的应用 423
实例291创建一个标准、只读和更新游标 423
实例292利用sp- cursor list查看游标属性 425
实例293利用spdescribe- cursor查看游标全局特性 426
实例294利用游标在商品销售表中返回指定行数据 428
实例295使用ORDER BY子句改变游标中行的顺序 429
实例296使用游标定位删除指定员工信息 431
实例297使用参数化游标更改员工部门信息 432
实例298使用嵌套游标查询两个员工表间的员工信息 433
7.7 SQL Server与XML互操作 435
实例299使用FOR XML RAW参数读取所有图书信息 435
实例300将存储在XML中的图书信息插入数据表中 436
实例301将图书销售表中的字段作为节点元素输出 437
实例302查询存储图书信息的XML节点 439
实例303获取XML节点或者元素值 440
实例304编辑存储图书信息的XML节点 441
实例305将XML节点转换为相应的数据表字段 444
第8章ADONET开发技术 446
8.1连接Access数据库 447
实例306连接Access数据库 447
实例307连接加密的Access数据库 448
实例308自动识别Access 2000数据库路径 449
实例309连接网络上共享的Access 2000数据库 450
实例310将Access数据库导入Excel文件中 452
8.2连接SQL Server数据库 453
实例311使用ODBC DSN连接SQL Server数据库 453
实例312使用ODBC非DSN连接SQL Server数据库 455
实例313使用OLE DB连接SQL Server数据库 457
实例314建立SQL Server数据库连接 458
8.3连接其他数据库 459
实例315 连接Excel 459
实例316连接文本文件 460
8.4数据库结构的读取与修改 462
实例317读取SQL Server数据库结构 462
实例318修改SQL Server数据库结构 464
8.5数据录入 466
实例319利用数据绑定控件录入数据 466
实例320使用ADONET对象录入数据 467
实例321利用SQL语句录入数据 469
实例322利用存储过程录入数据 470
实例323向SQL Server数据库中批量写入海量数据 472
8.6图片存取技术 473
实例324使用存取文件名的方法存取图片 473
实例325使用二进制存取用户头像 475
8.7数据修改 476
实例326利用数据绑定控件修改数据 476
实例327利用数据对象修改数据 478
实例328利用SQL语句修改数据 479
实例329利用存储过程修改数据 480
实例330使用断开式连接批量更新数据库中数据 482
8.8数据保存前判断 483
实例331判断是否重复输入数据 483
实例332 判断输入数据是否符合要求 485
8.9数据删除 487
实例333删除表格中指定的记录 487
实例334利用SQL语句删除数据 488
实例335利用SQL语句清空数据表 489
8.10数据记录 490
实例336分页显示信息 490
实例337移动记录 491
实例338综合查询职工详细信息 492
8.11数据维护 495
实例339在C#中创建数据库 495
实例340在C#中删除数据库 497
实例341在C#中创建数据表 498
实例342在C#中删除数据表 499
实例343在C#中分离SQL Server数据库 500
实例344在C#中附加SQL Server数据库 502
实例345在C#中附加单文件SQL Server数据库 503
8.12数据备份恢复 504
实例346备份SQL Server数据库 504
实例347还原SQL Server数据库 506
8.13其他数据库开发技术 509
实例348判断计算机中是否安装了SQL软件 509
实例349开启SQL Server数据库 510
实例350断开SQL Server数据库与其他应用程序的连接 511
实例351利用SQL语句执行外围命令 512
实例352对软件进行初始化 513
实例353带图像列表的系统登录程序 515
第9章LINQ to Objects——查询内存中对象 517
9.1 LINQ基础应用 518
实例354使用隐式类型局部变量实现字母的大小写转换 518
实例355使用自动实现属性记录用户信息 519
实例356使用对象初始化器创建对象并为其属性赋值 520
实例357使用Lambda表达式查找指定字符串 521
实例358使用扩展方法显示员工信息 522
实例359在线程中使用匿名方法防止窗体“假死” 524
实例360使用Predicate委托查找年龄大于30的员工 525
实例361使用Action委托实现遍历所有员工信息 526
实例362使用Func委托实现计算所有员工工资总和 527
9.2限定符操作 528
实例363检查序列中所有元素是否都满足指定条件 528
实例364检查序列中是否包含指定元素 529
9.3元素操作 531
实例365获取指定位置的元素 531
实例366使用LINQ生成随机序列 532
实例367使用LINQ初始化数组 533
实例368使用LINQ在一个循环中遍历多个数组 534
实例369筛选指定类型的元素 535
实例370使用LINQ实现销售单查询 536
实例371获取某类商品最后一次销售单价 538
9.4使用LINQ操作字符串 539
实例372使用LINQ生成字符串 539
实例373查找字符串中包含的大写字母 540
实例374查找字符串中包含的数字字符 541
实例375过滤文章中包含指定单词的句子 542
实例376统计每个单词在文章中出现的次数 543
实例377查找文章中以ing结尾的单词 544
实例378将字符串数组按元素长度分组 547
9.5类型转换操作 548
实例379将数据源转换为IEnumerable﹤T>类型 548
实例380将数据源转换为IQueable﹤T>类型 549
实例381转换为泛型列表 550
实例382转换为字典类型 551
实例383转换为一对多字典 552
实例384使用LQ转换序列或集合 554
9.6使用LINQ操作集合 556
实例385操作泛型列表List﹤T> 556
实例386操作泛型排序列表SortedList﹤TKey,TValue> 557
实例387操作泛型双向链表LinkedList﹤T> 558
实例388操作泛型队列Queue﹤T> 559
实例389操作泛型堆栈Stack﹤T> 561
实例390操作泛型哈希集HashSet﹤T> 562
实例391操作泛型字典Dictiona﹤TKey,TValue> 563
实例392操作泛型通用集合Collection﹤T> 565
实例393操作泛型绑定列表BindingList﹤T> 566
9.7使用LINQ技术操作对象 567
实例394使用LQ技术对对象进行筛选操作 567
实例395使用LQ技术对对象进行投影操作 568
实例396使用LQ技术对对象进行排序操作 570
实例397使用LQ技术对对象进行聚合操作 572
实例398使用LQ技术对对象进行集合操作 574
实例399使用LINQ技术对对象进行元素操作 576
实例400使用LINQ技术对对象进行联接操作 577
实例401使用LINQ技术获取文件详细信息 579
第10章LINQ to SQL——查询关系数据库 581
10.1数据查询 582
实例402查询单表数据 582
实例403获取与Not Exists等价的语句 585
实例404按多个字段降序排序数据表 586
实例405关联查询多表数据 587
实例406按照多个条件分组 588
实例407实现LQ动态查询的方法 589
10.2聚合操作 591
实例408 Count操作——统计每种商品的销售次数 591
实例409 Sum操作——统计每种商品的销售总额 592
实例410 Max操作——统计每种商品的最高销售价 593
实例411 Min操作——统计每种商品的最低销售价 594
实例412 Average操作——统计每种商品的销售均价 595
实例413 Aggregage操作——统计月销售额 596
10.3集合操作 597
实例414 Distinct操作——去除重复的返货记录 597
实例415差集操作——获取从未返过货的商品列表 598
实例416交集操作——获取有过返货记录的商品列表 599
实例417并集操作——查询每种商品的销售总数 600
10.4 DataContext类的方法 601
实例418检测数据库是否存在 601
实例419直接执行SQL查询 602
10.5数据操作 603
实例420生成LQ to SQL对象模型 603
实例421获取数据库连接信息 606
实例422使用LQ技术查询SQL数据库中的数据 608
实例423使用LQ技术向SQL数据库中添加数据 610
实例424使用LQ技术在SQL数据库中修改数据 611
实例425使用LQ技术在SQL数据库中删除数据 612
实例426使用存储过程查询单表数据 613
实例427使用SQL Server中的函数过滤数据 615
实例428根据外键获取主表信息 616
实例429使用LQ为列表控件提供数据 617
实例430使用LQ技术防止SQL注入式攻击 618
实例431使用LQ技术实现数据分页 620
第11章LINQ to DataSet——查询ADO.NET数据集 623
11.1数据查询 624
实例432使用LQ技术查询DataSet中的单个表 624
实例433使用LINQ技术对DataSet进行投影操作 625
实例434使用LQ技术查询DataSet中的多个表 626
实例435使用LQ技术对DataSet进行筛选操作 627
实例436使用LQ技术对DataSet进行排序操作 628
11.2数据分区操作 629
实例437从头开始提取指定数量的记录 629
实例438从头开始提取满足指定条件的记录 631
实例439跳过序列中指定数量的记录 632
实例440跳过满足指定条件的记录 633
11.3类型转换操作 634
实例441将查询结果转换为DataTable 634
实例442将查询结果转换为DataView 635
11.4其他操作 636
实例443聚合操作——按客户分组汇总销售金额 636
实例444使用LQ技术对DataSet进行元素操作 637
实例445使用LQ技术查询前5名数据 639
实例446使用LQ技术对数据进行排序 640
实例447使用LQ技术统计员工的工资总额 641
第12章LINQ to XML一一操作XML文件 643
12.1 XML文件基本操作 644
实例448使用LQ技术创建XML文件 644
实例449使用LQ技术对XML文件进行读取 645
12.2查询操作 647
实例450查找根元素 647
实例451查找指定名称的元素 648
实例452查找指定属性的元素 649
实例453遍历指定节点下的所有对象 650
实例454只返回指定节点下的注释 652
实例455访问指定节点的父节点 653
实例456返回节点集合中每个节点的所有上级节点 654
实例457返回节点集合中每个节点的所有下级节点 656
实例458返回元素集合中每个元素的所有属性 657
12.3元素操作 659
实例459使用LINQ技术向XML文件中添加数据 659
实例460使用LINQ技术修改XML文件中的数据 660
实例461替换指定节点下的所有元素 661
实例462使用LINQ技术删除XML文件中的数据 662
实例463合计XML元素值 664
12.4属性操作 665
实例464添加属性到XML文件 665
实例465修改元素的属性值 666
实例466删除一个元素的所有属性 667
实例467将文件中的属性转换为元素 669
12.5其他操作 670
实例468添加注释到XML文件 670
实例469添加声明到XML文件 671
实例470添加文档类型到XML文件 672
实例471使用LQ to XML转换XML 673
实例472读取XML文件并更新到数据库 676
第4篇 水晶报表与打印篇 680
第13章Windows打印组件的使用 680
13.1打印基础 681
实例473打印窗体中的数据 681
实例474图像打印 683
实例475自定义横向或纵向打印 684
实例476自定义打印页码范围 686
实例477分页打印 688
13.2常用报表的打印 690
实例478打印条形码 690
实例479打印学生个人简历 691
实例480打印一个空学生证 693
实例481打印商品入库单据 695
实例482批量打印学生证书 697
第14章 水晶报表设计技术 701
14.1水晶报表基本设置 702
实例483快速创建水晶报表 702
实例484设计带图片的水晶报表 704
实例485使图片成为整个报表的背景 706
实例486设置水晶报表中节的背景图片 707
实例487设置水晶报表中节的背景色 709
实例488在水晶报表中添加图表 710
实例489设置水晶报表的页面 713
实例490在水晶报表中添加节 714
实例491在水晶报表中移动节的顺序 715
实例492在水晶报表中合并节 716
实例493在水晶报表中删除节 717
实例494在水晶报表中显示与隐藏节 718
实例495设置多列样式水晶报表 719
实例496设置水晶报表中节的高度 721
实例497设置水晶报表的摘要信息 722
实例498设置水晶报表的打印日期与时间 723
14.2水晶报表的格式化 724
实例499在水晶报表中使用文本对象 724
实例500使用公式字段 726
实例501在水晶报表中使用线 728
实例502在水晶报表中使用方框 729
14.3对水晶报表进行排序与分组 730
实例503排序水晶报表中的数据 730
实例504对水晶报表中的数据进行分组 731
实例505在水晶报表中筛选数据 732
实例506设计分组统计报表 734
实例507对分组报表中的页码进行设置 735
第15章 水晶报表开发应用 737
15.1水晶报表常用应用 738
实例508利用报表专家设计并显示学生基本信息 739
实例509动态绑定水晶报表 742
实例510在水晶报表中使用Access数据库 743
实例511在水晶报表中使用SQL Server数据库 745
实例512高数成绩大于90分使用红色字体标记 746
实例513订货总金额超过10万元显示“恭喜获奖”文字 748
实例514薪资大于或等于1万元使用蓝色字体标记 750
实例515 筛选薪资大于2000元的男员工 752
实例516按类别分组统计图书库存 754
实例517按成绩总分降序排序 755
实例518部门销售量占公司总销售量的业绩百分比 757
实例519在水晶报表中使用交叉表 758
15.2子报表的使用 760
实例520插入子报表 760
实例521编辑与重新导入子报表 761
实例522根据需要显示子报表 763
实例523删除子报表 765
15.3使用水晶报表设计常用报表 766
实例524设计信封标签报表 766
实例525设计商品入库报表 767
实例526设计学生个人简历报表 768
实例 527设计汇款单式报表 769
第5篇 注册表操作篇 772
第16章 注册表基本操作 772
16.1注册表基本操作 773
实例528获取注册表信息 773
实例529向注册表中写入信息 774
实例530修改注册表信息 776
实例531搜索注册表内容 777
实例532 删除注册表信息 778
实例533备份注册表 780
实例534还原注册表 781
实例535禁止远程修改注册表 782
实例536禁止运行注册表 783
16.2注册表在实际中的应用 784
实例537使用C#打开Windows注册表 784
实例538建立数据文件与程序的关联 785
实例539使应用程序开机自动运行 786
实例540在注册表中保存窗体的大小和位置 788
实例541优化开关机速度 789
实例542优化菜单显示速度 790
实例543优化网上邻居显示速度 791
实例544获取本机安装的软件清单 792
第17章 系统个性化设置 793
17.1开始菜单设置 794
实例545启用和禁用“开始”菜单中的“运行”功能 794
实例546屏蔽和开启“开始”菜单中的“关机”功能 795
实例547在右键菜单中添加“用记事本打开”项 796
17.2个性桌面 797
实例548隐藏桌面快捷方式图标的小箭头 797
实例549禁用和启用主题选项卡 798
实例550禁用和启用外观选项卡 799
实例551禁用和启用屏幕保护选项卡 800
实例552设置任务栏时间样式 801
实例553删除“我的电脑”上下文菜单中的“属性” 802
17.3系统设置 803
实例554将磁盘驱动器隐藏 803
实例555禁止显示任务栏的右键菜单 804
实例556禁止对任务栏位置进行改变 806
实例557禁止使用Windows任务管理器 807
实例558禁止使用控制面板的添加删除程序 808
实例559禁止使用命令提示符 809
实例560关机时自动关闭停止响应的程序 810
第18章IE浏览器设置 811
18.1 IE浏览器基本设置 812
实例561隐藏桌面上的IE浏览器图标 812
实例562禁止修改IE浏览器主页 814
实例563设置IE浏览器的默认主页 815
实例564修改IE浏览器标题栏内容 816
实例565设置IE地址栏的自动完成功能 817
18.2 IE浏览器高级应用 818
实例566向收藏夹中添加网址 818
实例567清除IE地址栏中的历史网址 819
实例568设置IE浏览器的默认下载路径 821
实例569清空IE浏览器的缓存区 822
实例 570使用WebBrowser控件制作IE浏览器 823
第6篇 软件安全控制篇 828
第19章 加密与解密技术 828
19.1数据的加密与解密 829
实例571异或算法对数字进行加密与解密 829
实例572使用MD5算法加密数据 830
实例573使用ROT13算法加密解密数据 831
实例574使用恺撒密码算法加密密码 833
实例575对数据报进行加密保障通信安全 834
实例576使用one-time pad算法加密数据 839
实例577使用伪随机数加密技术加密用户登录密码 840
实例578以XML格式导入导出密钥 842
实例579以参数格式导入导出密钥 844
19.2文件的加密与解密 846
实例580文本文件加密与解密 846
实例581利用图片加密文件 849
实例582对文件进行加密保护 851
实例583使用口令加密可执行文件 856
实例584使用对称算法加密解密文件 860
第20章 数据库安全技术 863
20.1连接加密的数据库 864
实例585连接加密的Access数据库 864
实例586连接加密的Excel文件 865
实例587访问带验证模式的SQL Server数据库 866
20.2数据库安全在实际中的应用 868
实例588编程修复Access数据库 868
实例589 Access数据库备份与恢复 869
实例590加密数据库中的数据 871
实例591加密DataSet数据集 873
实例592防止SQL注入式攻击 875
第21章 软件安全控制 877
21.1软件的注册 878
实例593利用文件对软件进行注册 878
实例594利用注册表设计软件注册程序 880
实例595利用网卡序列号设计软件注册程序 882
实例596根据CPU序列号和磁盘卷标制作软件注册机 884
21.2软件的加密 886
实例597制作一个EXE文件加密器 886
实例598限制软件的使用次数 890
实例599使用强名称标识软件 892
实例600软件加壳常用工具及使用 893
第1篇C#编程基础篇 2
第1章C#开发环境的使用 2
1.1 Visual Studio开发环境的安装与配置 3
实例001配置合适的Visual Studio 2008开发环境 3
实例002设置程序代码行号 4
实例003使开发环境全屏显示 5
实例004根据需要创建所需解决方案 6
1.2 Visual Studio开发环境的使用 7
实例005为程序设置版本和帮助信息 7
实例006设置Windows应用程序启动窗体 8
实例007统一窗体中控件的字体设置 9
实例008通过“格式”菜单布局窗体 10
1.3快速开发项目必备 10
实例009为项目添加DLL文件引用 10
实例010为项目添加已有类 11
实例011为项目添加第三方控件 12
实例012为项目添加已有窗体 13
第2章C#语言基础应用 15
2.1代码的注释 16
实例013对单行代码进行注释 16
实例014快速对多行代码进行注释 17
实例015使用“”标记给代码段添加说明 18
2.2运算符的使用 20
实例016使用引号运算符进行赋值 20
实例017使用算术运算符开发简单计算器 21
实例018使用“?”运算符对数字进行加密 22
实例019巧用位移运算符获取汉字编码值 24
实例020使用条件运算符判断指定年份是不是闰年 25
实例021使用流程控制语句报销业务花销 26
2.3关键字的使用 27
实例022使用checked关键字处理“溢出”错误 27
实例023使用peof关键字获取类的内部结构 28
实例024使用using关键字有效回收资源 29
实例025使用is关键字检查对象是否与给定类型兼容 30
实例026使用as关键字将对象转换为指定类型 32
2.4流程控制语句的使用 34
实例027小明去学校和医院分别要走哪条路 34
实例028利用条件语句判断用户登录身份 35
实例029判断指定月份属于哪个季节 36
实例030使用switch语句更改窗体颜色 37
实例031循环向控制台中输入内容 38
实例032递归算法的经典面试题 39
实例033制作一个数字猜猜看小游戏 40
实例034使用goto语句在数组中搜索指定图书 42
第3章 字符串处理技术 44
3.1字符及字符串转换 45
实例035将字母全部转换为大写或小写 45
实例036字母与ASC码的转换 46
实例037汉字与区位码的转换 48
实例038将汉字转换为拼音 49
3.2常用字符及字符串操作 50
实例039根据标点符号对字符串进行分行 50
实例040判断用户输入的用户名是否正确 51
实例041将字符串的每个字符进行颠倒输出 52
实例042去掉字符串中的所有空格 54
实例043从字符串中分离文件路径、文件名及扩展名 55
实例044获取字符串中汉字的个数 57
实例045批量替换某一类字符串 58
实例046对字符串进行加密与解密 59
3.3常用数字处理技术 61
实例047判断输入的货币值是否为数字 61
实例048对计算结果进行四舍五入 62
实例049商品金额的大小写转换 63
实例050设置货币值中使用的小数位数 64
实例051格式化输入数据为货币格式 65
实例052开发一个进制转换器 67
3.4日期时间格式的数据处理 67
实例053动态获得系统当前日期和时间 67
实例054手动设置系统日期时间 69
实例055根据生日自动计算员工年龄 70
实例056根据年份判断十二生肖 71
实例057获取当前日期是星期几 72
实例058获取当前年的天数 73
实例059获取当前月的天数 74
实例060取得当前日期的前一天 75
实例061将日期格式化为指定格式 76
实例062使用DateDi方法获取日期时间的间隔数 77
实例063使用DateAdd方法向指定日期添加一段时间间隔 78
实例064使用TimeSpan对象获取时间间隔 80
实例065使用Sleep方法延迟时间 81
实例066如何确定程序的运行时间 82
实例067使用ParseExact方法将字符串转化为日期格式 84
实例068使用ToString方法格式化日期 85
实例069使用ToDateTime方法转换日期显示格式 86
3.5常用数字验证技巧 87
实例070使用正则表达式验证电话号码 87
实例071使用正则表达式验证输入密码条件 88
实例072使用正则表达式验证邮政编号 89
实例073使用正则表达式验证手机号 89
实例074使用正则表达式验证身份证号 90
实例075使用正则表达式验证两位小数 91
实例076使用正则表达式验证一年的12个月份 92
实例077使用正则表达式验证一个月的31天 93
实例078使用正则表达式验证数字输入 94
实例079使用正则表达式验证密码长度 95
实例080使用正则表达式验证非零的正整数 96
实例081使用正则表达式验证非零的负整数 97
3.6常用字符验证技巧 98
实例082使用正则表达式验证大写字母 98
实例083使用正则表达式验证小写字母 99
实例084使用正则表达式检查字符串中重复出现的词 99
实例085使用正则表达式替换字符串 101
实例086使用正则表达式拆分字符串 102
实例087使用正则表达式验证输入字母 102
实例088使用正则表达式验证中文汉字输入 103
实例089使用正则表达式验证输入字符串 104
3.7网络验证应用技巧 105
实例090使用正则表达式验证E-mail格式 105
实例091使用正则表达式验证IP地址 106
实例092使用正则表达式验证URL 107
第4章 数组和集合的使用 109
4.1数组的基本操作 110
实例093获取多维数组的行数与列数 110
实例094按指定条件在数组中检索元素 111
实例095在数组中添加一个元素 112
实例096在数组中添加一个数组 113
实例097不改变长度删除数组中的元素 115
实例098删除数组元素后改变其长度 116
4.2常用数组排序算法 117
实例099使用选择排序法对一维数组进行排序 117
实例100使用冒泡排序法对一维数组进行排序 118
实例101使用快速排序法对一维数组进行排序 119
实例102使用直接插入法对一维数组进行排序 121
实例103使用希尔排序法对一维数组进行排序 122
实例104使用Sort方法对数组进行快速排序 124
实例105反转数组中元素的顺序 125
4.3常用集合的使用 126
实例106向班级集合中添加学生信息 126
实例107使用哈希表对XML文件进行查询 127
实例108计算两个矩形矩阵的乘积 129
第5章 面向对象编程技术 131
5.1属性和方法 132
实例109使用属性存储用户编号和姓名 132
实例110通过定义方法求一个数的平方 133
实例111使用重载方法实现不同类型数据的计算 135
5.2结构与类 136
实例112通过结构计算矩形的面积 136
实例113通过类继承计算梯形面积 137
实例114封装类实现一个简单的计算器 139
实例115 使用面向对象思想查找字符串中的所有数字 140
5.3面向对象技术高级应用 141
实例116自定义抽象类计算圆形的面积 141
实例117利用接口实现选择不同的语言 143
实例118使用密封类密封用户信息 145
实例119通过重写虚方法实现加法运算 146
实例120通过类的多态性确定人类的说话行为 147
5.4迭代器和分部类的使用 149
实例121使用迭代器显示公交车站点 149
实例122使用迭代器实现倒序遍历 150
实例123使用迭代器实现文字的动态效果 151
实例124使用分部类实现多种计算方法 153
实例125使用分部类记录学生信息 155
5.5泛型的使用 156
实例126使用泛型存储不同类型的数据列表 156
实例127通过泛型查找不同数组中的值 158
实例 128通过继承泛型类实现输出学生信息 159
实例129通过泛型实现子窗体的不同操作 160
实例130使用泛型去掉数组中的重复数字 161
第6章 数据结构与算法 163
6.1数据结构的实现 164
实例131单向链表的实现 164
实例132双向链表的实现 168
实例133堆栈的实现 173
实例134队列的实现 175
实例135树的实现 177
6.2常见算法的实际应用 180
实例136计算1+22+33+44++++nn的值 180
实例137计算10!的值 181
实例138求最大公约数 181
实例139求最小公倍数 182
实例140判断素数的算法 183
实例141按要求生成指定位数编号 184
实例142身份证号从15位升到18位的算法 186
实例143歌德巴赫猜想的算法实现 187
实例144八皇后问题的算法实现 188
实例145百钱百鸡的算法实现 190
实例146韩信点兵的算法实现 191
实例147实现斐波纳契数列求和 192
实例148求水仙花数的算法实现 193
实例149约瑟夫环问题的算法实现 194
实例150 C#实现杨辉三角算法 195
实例151如何将B转换成GB、 MB和KB 196
实例152 0~N位数的任意组合 197
实例153在数组中快速查找近似值 199
实例154猴子选大王算法的实现 200
实例155使用MD5算法对密码进行加密 201
实例156恺撤密码算法的实现 202
第2篇Windows窗体篇 206
第7章Windows窗体基础 206
7.1设置窗体位置 207
实例157控制窗体加载时的位置 207
实例158设置窗体在屏幕中的位置 208
实例159从上次关闭位置启动窗体 209
实例160始终在桌面最顶层显示的窗体 210
7.2设置窗体大小 211
实例161限制窗体大小 211
实例162根据桌面大小调整窗体大小 212
实例163自定义最大化、最小化和关闭按钮 213
实例164手动改变自制窗体的大小 215
实例165禁止改变窗体的大小 218
7.3设置窗体的标题栏 218
实例166使窗体标题栏文字右对齐 218
实例167没有标题栏也可以更改窗体的大小 219
实例168设置闪烁的标题栏 220
7.4设置窗体的背景 221
实例169设置窗体背景颜色为淡蓝色 221
实例170设置窗体背景为指定图片 222
实例171使背景图片自动适应窗体的大小 223
实例172使背景图片在窗体中居中显示 224
实例173使背景图片在窗体中平铺显示 225
实例174清空窗体的背景 226
第8章 特色窗体界面 227
8.1导航菜单界面 228
实例175创建类似OutLook的窗体 228
实例176带导航菜单的主界面 229
实例177图形化的导航界面 230
8.2特殊形状的窗体 232
实例178创建非矩形窗体 232
实例179建立字体形状窗体 233
实例180使控件大小随窗体自动调整 234
实例181带分隔栏的窗体 234
8.3窗体效果 235
实例182制作半透明渐显窗体 235
实例183使窗体背景色渐变 236
实例184随机更换主界面背景 237
实例185磁性窗体的设计 238
实例186制作鼠标穿透窗体 246
实例187窗体换肤程序 247
8.4窗体动画 250
实例188窗体中的滚动字幕 250
实例189动画显示窗体 251
实例190制作类似Office的提示精灵 252
实例191动画形式的程序界面 254
8.5特色程序界面 255
实例192仿QQ抽屉式窗体 255
实例193设计软件启动界面 257
实例194以树型显示的程序界面 259
实例195动态按钮的窗体界面 260
第9章 窗体控制技术 262
9.1窗体控制技术 263
实例196以全屏方式显示程序窗体 263
实例197通过子窗体刷新父窗体 264
实例198拖动无边框窗体 265
实例199禁用窗口上的关闭按钮 267
实例200向窗体中拖放图片并显示 268
实例201使应用程序在进程中消失 269
9.2其他窗体技术 270
实例202在关闭窗体时弹出确认对话框 270
实例203隐藏应用程序在任务栏中的图标 272
实例204实现动态系统托盘图标 272
实例205实现气泡提示窗口 275
实例206从桌面右下角显示的Popup窗口提醒 276
实例207设置可执行文件的生成图标 278
第10章MDI窗体和继承窗体 279
10.1 MDI窗体的使用 280
实例208设置窗体为父窗体 280
实例209使子窗体最大化显示 281
实例210对子窗体进行水平排列 282
实例211对子窗体进行垂直排列 283
实例212对子窗体进行层叠排列 284
10.2继承窗体的使用 285
实例213使用继承选择器创建继承窗体 285
实例214以编程方式创建继承窗体 286
实例215 修改继承窗体中的控件属性 287
第3篇 控件应用篇 290
第11章Windows常用控件的使用 290
11.1按钮控件的使用 291
实例216轻松打造绚丽按钮 291
实例217给Buon控件创建快捷键 292
实例218使Buon控件大小自动适应文本长度 293
实例219得到鼠标焦点后自动放大的Button按钮 294
实例220动态创建多个Buon控件 295
11.2 TextBox控件应用 296
实例221制作多行文本框 296
实例222制作密码文本框 297
实例223在TextBox控件中显示回车符 297
实例224只允许输入数字的TextBox控件 298
实例225在TextBox控件底端显示下划线 299
实例226屏蔽TextBox控件上的粘贴功能 300
实例227屏蔽TextBox控件上默认的右键菜单 301
11.3 ComboBox控件应用 302
实例228设置ComboBox控件的默认选项为第一项 302
实例229将数据表中的字段添加到ComboBox控件中 303
实例230在ComboBox下拉列表中显示图片 304
实例231用ComboBox控件制作浏览器网址输入框 305
实例232 实现带查询功能的ComboBox控件 306
11.4 RichTextBox控件应用 308
实例233在RichTextBox控件中添加超链接文字 308
实例234在RichTextBox控件中插入图片 309
实例235在RichTextBox控件中显示RTF格式的文件 310
实例236使用RichTextBox控件保存文件 312
实例237为RichTextBox控件添加自定义滚动条 313
实例238在RichTextBox控件中实现关键字描红 314
实例239在RichTextBox控件中替换文本文字 315
实例240在RichTextBox控件中实现项目符号功能 316
实例241设置RichTextBox控件中的文本对齐方式 318
11.5 ListBox控件应用 319
实例242在ListBox控件中实现选择项功能 319
实例243选中ListBox控件中全部条目 320
实例244对ListBox控件中的数据进行排序 321
实例245在ListBox控件中查找指定项 322
实例246将数据库数据添加到组合框中 323
实例247在ListBox控件间交换数据 324
实例248借助绑定控件实现数据选择录入 325
11.6 ListView控件应用 326
实例249 ListView控件间的数据移动 326
实例250将数据库数据添加到ListView控件 327
实例251在ListView控件中实现修改功能 328
实例252在ListView控件中对数据排序 330
实例253在ListView控件中绘制底纹 331
实例254在列表视图中拖动视图项 332
实例255使ListView控件中的选择项高亮显示 333
实例256制作带复选框的ListView控件 335
11.7选择类控件应用 336
实例257利用选择控件实现权限设置 336
实例258利用选择控件实现复杂查询 337
11.8 TreeView控件应用 339
实例259在TreeView控件节点中显示图片 339
实例260实现带复选框的TreeView控件 340
实例261将数据库数据显示到树视图中 341
实例262用树型列表动态显示菜单 342
实例263用TreeView控件遍历磁盘目录 344
实例264修改TreeView控件的节点文本 345
实例265将XML文件节点绑定到TreeView控件中 346
11.9选项卡控件的使用 347
实例 266更改选项卡的显示样式 347
实例267添加多个选项卡 348
实例268获取选中的选项卡名称 349
实例269删除指定的选项卡 350
11.10菜单应用实例 351
实例270为菜单添加快捷键 351
实例271设置菜单项是否可用 352
实例272将菜单项的字体设置为粗体 353
实例273创建级联菜单 354
实例274级联菜单的动态合并 355
实例275带历史信息的菜单 356
实例276像开始菜单一样漂亮的菜单 357
实例277制作任务栏托盘菜单 357
实例278可以拉伸的菜单 358
实例279仿XP系统的任务栏菜单 360
11.11工具栏设计 361
实例280带图标的工具栏 361
实例281带背景图片的工具栏 362
实例282设计浮动工具栏 363
实例283带下拉菜单的工具栏 364
实例284具有提示功能的工具栏 364
11.12状态栏设计 365
实例285在状态栏中显示复选框 365
实例286在状态栏中显示当前系统操作员 366
实例287在状态栏中实时显示当前系统时间 367
实例288带进度条的状态栏 368
实例289制作动画效果的状态栏 369
第12章Windows高级控件的使用 371
12.1对话框组件的使用 372
实例290获得弹出对话框的相关返回值 372
实例291使用OpenFileDialog组件打开文件 373
实例292设置OpenFileDialog组件中只能选择图片文件 374
实例293使用OpenFileDialog组件打开多个文件 375
实例294使用SaveFileDialog组件保存文件 376
实例295使用FolderBrowserDialog组件选择文件夹 377
实例296设置FolderBrowserDialog组件的默认路径 378
实例297使用FontDialog组件设置字体 379
实例298使用ColorDialog组件设置字颜色 380
12.2 Timer组件的使用 381
实例299使用Timer组件制作计时器 381
实例300使用Timer组件显示当前系统时间 382
实例301使用Timer组件制作左右飘动的窗体 383
实例302使用Timer组件实现世界杯倒计时 384
实例303使用Timer组件实现人物动画效果 385
12.3 EventLog组件 386
实例304使用EventLog组件读写事件日志 386
实例305使用EventLog组件保存Windows系统日志 388
实例306使用EventLog组件向本机现有日志中添加条目 389
12.4其他常用控件的典型应用 391
实例307使用MaskedTextBox控件实现输入验证 391
实例308制作日历计划任务 392
实例309在ProgressBar控件中显示进度百分比 394
实例310使用BackgroundWorker组件执行异步操作 395
实例311使用ErrorProvider组件验证文本框输入 398
实例312使用FileSystemWatcher组件监视日志文件 399
实例313使用HelpProvider组件调用帮助文件 401
实例314使用Process组件访问本地进程 402
实例315使用ServiceController组件控制计算机服务 403
实例316使用ImageList组件制作动画图片 406
实例317使用DirectoEnt组件建立虚拟目录 407
12.5常用控件控制技术 409
实例318程序运行时智能增减控件 409
实例319多控件焦点循环移动 410
实例320使用控件的Tag属性传递信息 412
实例321为控件设置快捷键 413
12.6控件焦点变换 414
实例322按回车键变换控件焦点 414
实例323程序运行时拖动控件 415
实例324控件得到焦点时变色 417
第13章DataGridView数据控件 418
13.1 DataGdView控件基本设置 419
实例325设置DataGdView控件中网格线的样式 419
实例326设置DataGdView控件中字体的样式 419
实例327在DataGdView控件中设置数据显示格式 420
实例328设置DataGdView单元格的文本对齐方式 421
实例329在DataGdView控件中验证数据输入 422
实例330在DataGdView的单元格中启用换行 423
实例331禁止DataGdView控件中添加和删除行 424
实例332禁用DataGdView控件列表头自动排序功能 425
13.2 DataGdView控件实用开发 426
实例333对DataGdView控件进行数据绑定 426
实例334 DataGdView选中单元格时整个行背景变色 427
实例335在DataGdView控件中隔行换色 429
实例336在DataGdView控件中实现下拉列表 430
实例337在DataGdView控件中显示图片 431
实例338为DataGridView控件实现复选功能 431
实例339在DataGridView控件中添加“合计”和“平均值” 433
实例340使用主从表查看生产单详细信息 434
实例341将DataGridView中数据导出到Word 435
实例342将DataGridView中数据导出到Excel 437
实例343像Excel一样复制DataGridView中数据 439
实例344从DataGridView中拖放数据到TreeView 443
第14章 自定义用户控件 447
14.1重绘Windows标准控件 448
实例345美化ComboBox控件下拉列表 448
实例346美化单选按钮控件 449
实例347美化复选框控件 453
实例348重绘ListBox控件 455
14.2自定义Windows控件 457
实例349自定义水晶按钮控件 457
实例350自制数值文本框组件 461
实例351设计带行数和标尺的RichTextBox控件 466
实例352自制平滑进度条控件 471
实例353制作Vista风格的日历 473
实例354 DataGridView和BindingSource复合控件 477
第4篇 文件操作篇 482
第15章 文件基本操作 482
15.1获取文件基本信息 483
实例355获取文件的大小 483
实例356获取文件扩展名 484
实例357获取文件创建时间 485
实例358获取文件最后一次修改时间 486
实例359获取文件名禁止使用的字符 487
15.2创建和删除文件 488
实例360创建和删除文件 488
实例361生成随机文件名或文件夹名 489
实例362建立临时文件 490
实例363根据日期动态建立文件 491
实例364清空回收站中的所有文件 492
15.3查找文件 493
实例365检查文件是否存在 493
实例366获取文件夹下所有子文件夹及文件的名称 494
实例367搜索文件 496
15.4修改文件 497
实例368修改文件属性 497
实例369修改文件及目录的名字 498
实例370将长文件名转换成短文件名 499
实例371文件批量更名 500
15.5复制文件 502
实例372使用 FileStream复制大文件 502
实例373复制文件时显示复制进度 504
实例374批量复制文件 506
15.6指定类型的文件操作 507
实例375使用C#操作文件 507
实例376使用C#操作XML文件 509
实例377创建PDF文档 513
15.7其他 514
实例378获取窗口文本 514
实例379判断文件是否正在被使用 516
实例380 C#中实现文件拖放 517
实例381根据内容对文件进行比较 518
实例382获取文件夹中的图标资源 519
实例383将一个文件分割成多个小文件 521
实例384将多个小文件合并为一个文件 523
第16章 文件夹基本操作 525
16.1获取文件夹信息 526
实例385获得文件夹创建时间 526
实例386获取临时文件目录 527
实例387获取应用程序所在目录 527
实例388得到系统当前目录 528
实例389获取路径名禁止使用的字符 529
16.2文件夹操作 530
实例390判断指定文件夹是否存在 530
实例391创建文件夹 531
实例392以当前日期时间为根据创建文件夹 532
实例393移动文件夹 533
实例394删除文件夹 533
实例395获取所有逻辑磁盘目录 534
实例396获取指定文件夹的上级目录 537
实例397使用递归法删除文件夹中的所有文件 538
实例398对指定文件夹中的文件进行分类存储 539
实例399伪装文件夹 540
第17章 文件流操作 544
17.1文件的读取和写入 545
实例400创建一个文件用于写入UTF-8编码的文本 545
实例401 OpenRead方法打开现有文件并读取 546
实例402 OpenWte方法打开现有文件并进行写入 547
实例403打开现有UTF-8编码文本文件并进行读取 549
实例404读取文件中的第一行数据 550
实例405按行读取文本文件中的数据 550
实例406读取文件中的所有数据 551
实例407向文件中写入追加数据 552
17.2常用的文件流操作 553
实例408将文本文件转换成网页文件 553
实例409读写内存流数据 555
实例410创建并写入二进制文件数据 556
实例411读取二进制文件中的内容 558
实例412使用缓冲流复制文件 559
实例413解析只有一种格式的文本文件 560
实例414解析含有多种格式的文本文件 562
第18章 加密、解密及解压缩文件 565
18.1加密与解密文件 566
实例415 对文本文件进行加密与解密 566
实例416利用图片对文件进行加密与解密 569
实例417使用ROT13算法加密解密文件 571
实例418使用对称算法加密解密文件 573
实例419使用口令加密可执行文件 575
18.2压缩和解压缩文件 579
实例420如何使用GZip压缩文件 579
实例421如何使用GZip解压文件 580
实例422如何使用WinRAR压缩文件 582
实例423如何使用WinRAR解压文件 583
实例424批量压缩和解压缩文件 585
第5篇C#与Office高效开发篇 590
第19章C#与Word互操作 590<