欢迎光临本店     登录 注册   加入收藏
  •   
欢迎光临清华大学出版社第三事业部!

此页面上的内容需要较新版本的 Adobe Flash Player。

获取 Adobe Flash Player

当前位置: 首页 > 外版图书 > 计算机与互联网 > Microsoft .NET Compact Framework技术内幕

浏览历史

Microsoft .NET Compact Framework技术内幕

Microsoft .NET Compact Framework技术内幕

prev next

  • 商品货号:01182005-8-20-575
  • 商品重量:0克
    作者:Andy Wigley, Stephen Wheelwright 著 罗兵 徐雅骥 江楠 译
    图书书号/ISBN:7-302-07228-0
    出版日期:2003-09-01
    印张:45.75
    字数:1090千字
    开本:16
  • 上架时间:2005-09-04
    商品点击数:1216
  • 定价:¥76.00元
    本店售价:¥45.75元
    注册用户:¥45.75元
    vip:¥43.46元
    黄金等级:¥41.18元
    用户评价: comment rank 5
  • 商品总价:
  • 购买数量:

内容简介:

商品附加资源

.NET Compact Framework为手持设备(如Pocket PC和智能电话)提供了.NET Framework的强大功能。 本书是《微软.NET程序员系列》丛书之一。全书分为5个部分,分别介绍了.NET Compact Framework的体系结构、如何用.NET Compact Framework开发应用程序、如何访问数据,以及一些可用来开发高级移动应用程序的技术,可帮助读者轻松地完成从桌面设备开发者向移动设备开发者的转变。 本书适合有一定程序开发经验的中、高级读者阅读。
前言 xvii
第I部分 .NET Compact Framework 体系结构
第1章 .NET Compact Framework 介绍 3
1.1 智能移动计算设备简史 3
1.1.1 便携式计算的起始 4
1.1.2 PSION发明了个人管理器 5
1.1.3 PDA市场的发展 5
1.1.4 Microsoft与手持设备 6
1.2 Microsoft .NET 7
1.2.1 .NET出现之前的COM 解决方案 7
1.2.2 .NET是更好的COM 10
1.2.3 这就是.NET了吗 12
1.2.4 .NET与移动性 12
1.3 .NET Compact Framework 目标平台 15
1.3.1 运行.NET Compact Framework的平台 15
1.3.2 不支持.NET Compact Framework的平台 15
1.4 开发工具 16
1.4.1 Visual Studio .NET 2003 16
1.4.2 eMbedded Visual Tools 第3版 17
1.4.3 eMbedded C++第4版 18
1.4.4 在Visual Studio .NET中 开始智能设备项目 19
1.4.5 管理项目 22
1.4.6 创建一个Hello World 应用程序 24
1.4.7 使用仿真器 26
1.5 移动设备开发者所面临的 独特挑战 29
1.5.1 获得数据 29
1.5.2 资源受限的设备 30
1.5.3 安全模式 31
1.6 本章小结 32
第2章 .NET框架基础 33
2.1 Compact Framework执行环境 33
2.1.1 公共语言运行库 34
2.1.2 程序集 39
2.2 使用类对象 40
2.2.1 构造函数和终结器 40
2.2.2 用IDisposable释放资源 42
2.2.3 委托与事件 44
2.3 .NET Compact Framework类库 48
2.3.1 类库结构 49
2.3.2 与.NET Framework完整版 的主要不同 55
2.4 本章小结 63
第II部分 使用.NET Compact Framework 开发应用程序
第3章 使用Windows窗体进行 GUI开发 67
3.1 System.Windows.Forms 命名空间 67
3.2 创建Windows窗体 68
3.2.1 窗体设计器 68
3.2.2 Windows窗体目标平台 的差别 68
3.3 .NET Framework与.NET Compact Framework窗体行为的比较 69
3.3.1 支持和不支持的控件 70
3.3.2 图形支持 72
3.4 探讨Windows窗体控件 72
3.4.1 控件的创建 72
3.4.2 控件的成员 73
3.4.3 .NET Compact Framework 控件 75
3.5 本章小结 129
第4章 构建Windows窗体 应用程序 130
4.1 使用窗体 130
4.1.1 设置Form类的属性 130
4.1.2 遵循窗体显示原则 132
4.1.3 创建自定义的对话框 132
4.1.4 使用内置的对话框 134
4.2 使用InputPanel控件 136
4.3 使用MainMenu控件 137
4.4 使用ToolBar控件 139
4.5 在Pocket PC上编程实现 窗体的激活和停用 142
4.5.1 编程实现激活和停用 143
4.5.2 编程实现窗体关闭 143
4.5.3 通过Pocket PC Shell 关闭应用程序 144
4.6 处理轻击并保持事件 144
4.7 处理Pocket PC硬件键 145
4.8 为应用程序提供启动方式 146
4.8.1 为应用程序关联 一个图标 146
4.8.2 在Start菜单中添加一个 快捷方式 146
4.9 一般性设计原则 148
4.10 本章小结 149
第5章 测试和调试 150
5.1 发现并纠正编程错误 150
5.2 使用调试器 150
5.2.1 调试一个示例应用程序 151
5.2.2 理解默认的异常处理 153
5.2.3 在调试器中处理异常 153
5.3 使用调试器特性 154
5.3.1 进入中断模式 154
5.3.2 创建一个断点 155
5.3.3 监视变量和表达式 155
5.3.4 逐步执行一个应用程序 157
5.3.5 从中断模式继续一个 程序 157
5.3.6 终止一个程序 157
5.3.7 删除断点 157
5.3.8 设置更为复杂的断点 157
5.3.9 开始执行(不调试) 160
5.4 不支持的调试器特性 160
5.5 跟踪从应用程序得到的输出 160
5.6 在应用程序内部使用断言 161
5.7 在调试器中处理异常 161
5.8 控制发布代码的大小 163
5.9 在异常中生成更长的错误消息 164
5.10 测试和调试的策略 164
5.11 从Visual Studio中配置仿真器 165
5.12 手动地启动仿真器 167
5.13 使用仿真器外观 168
5.13.1 使用映像文件 169
5.13.2 仿真硬件按钮 171
5.13.3 用外观文件启动仿真器 172
5.14 本章小结 173
第6章 完成并分发应用程序 174
6.1 选择项目设置 174
6.1.1 使用文件的Build Action 属性 174
6.1.2 将一个图标关联到 应用程序 175
6.1.3 设置部署目录 175
6.1.4 应用程序私有程序 集的优点 176
6.2 对应用程序进行打包 177
6.2.1 创建针对处理器的 CAB文件 177
6.2.2 使用Visual Studio .NET 生成CAB文件 177
6.2.3 使用CAB向导生成 CAB文件 178
6.2.4 使用资源文件生成器 179
6.2.5 理解配置文件 179
6.3 分发应用程序 186
6.3.1 安装.NET Compact Framework 187
6.3.2 从一个Web站点 进行部署 188
6.3.3 从一个文件共享 进行部署 188
6.3.4 从另外的设备进行部署 189
6.3.5 使用内存存储卡 进行部署 189
6.3.6 通过ActiveSync 进行部署 190
6.4 使用Trickle-Feed部署 193
6.5 将程序集安装到全局 程序集缓存中 194
6.5.1 理解强名称程序集 195
6.5.2 使用并行的版本控制 197
6.6 本章小结 199
第III部分 常用的编程任务
第7章 使用集合类 203
7.1 .NET Compact Framework 集合类介绍 203
7.2 使用简单的数组 205
7.2.1 初始化引用类型的数组 206
7.2.2 使用多维数组 207
7.3 使用.NET Compact Framework 集合 209
7.3.1 创建一个ArrayList集合 209
7.3.2 使用Hashtable集合 存储键值对 210
7.3.3 使用Stack类 210
7.3.4 使用ListDictionary集合 存储元素 211
7.3.5 使用HybridDictionary 集合 211
7.3.6 使用NameValueCollection 存储字符串键值对 211
7.4 在集合中对对象进行排序 211
7.4.1 使用IComparable 进行排序 212
7.4.2 用IComparer实现多个 排序顺序 213
7.5 创建您自己的集合 219
7.6 本章小结 222
第8章 使用日期和字符串 223
8.1 理解String类 223
8.1.1 使用字符串 223
8.1.2 与.NET Framework完整版 中的String类的区别 226
8.2 使用StringBuilder类 226
8.2.1 使用StringBuilder的方法 和属性 227
8.2.2 与.NET Framework完整版 中的StringBuilder 类的区别 227
8.3 使用日期 228
8.3.1 构造日期 228
8.3.2 使用DateTime属性 228
8.3.3 使用DateTime的 算术方法 229
8.3.4 使用DateTime的 实用方法 229
8.3.5 使用DateTime运算符 230
8.3.6 与.NET Framework 完整版的不同之处 230
8.4 使用正则表达式 230
8.4.1 理解正则表达式 231
8.4.2 使用简单的正则表达式 匹配和Match对象 231
8.4.3 用MatchCollection对象 处理多个匹配 232
8.4.4 使用分组和捕获 232
8.4.5 替换文本模式 233
8.4.6 使用Split方法 234
8.5 设置输出字符串的格式 234
8.5.1 理解概念和术语 234
8.5.2 使用格式说明符 235
8.5.3 使用格式规范和 String.Format方法 241
8.5.4 理解格式提供程序 241
8.6 分析 243
8.6.1 解决分析中的问题 243
8.6.2 分析日期 244
8.7 本章小结 244
第9章 使用XML 245
9.1 在.NET Compact Framework 中使用XML 246
9.2 与.NET Framework完整版 的不同点 247
9.3 使用XmlReader类读取XML 247
9.3.1 理解XmlTextReader类 247
9.3.2 构造XmlTextReader 对象 247
9.3.3 用XmlTextReader类读取 XML文档 248
9.3.4 不处理不必要的节点 250
9.3.5 读取属性节点 250
9.3.6 用XmlTextReader处理 命名空间 252
9.3.7 处理验证、DTD和实体 253
9.3.8 处理注释节点 253
9.3.9 处理CDATA节点 254
9.4 用XmlWriter类写入XML 254
9.4.1 用XmlTextWriter类写入 XML文档 254
9.4.2 构造XmlTextWriter 255
9.4.3 写入XML数据 255
9.4.4 用XmlTextWriter处理 命名空间 256
9.5 用XmlDocument类处理XML 259
9.5.1 理解XmlDocument类 259
9.5.2 与.NET Framework完整版 的不同点 260
9.5.3 用XmlDocument类 读取XML 260
9.5.4 用GetElementsByTagName 查找XML文档 266
9.5.5 修改XML文档 267
9.5.6 保存XML文档 271
9.6 本章小结 271
第10章 输入和输出 273
10.1 理解Stream类 273
10.1.1 创建FileStream对象 274
10.1.2 为流指定文件访问模式 274
10.1.3 为流指定文件共享模式 275
10.1.4 使用FileStream对象 读取和写入字节 276
10.1.5 使用BinaryReader 和BinaryWriter类 276
10.1.6 在流中查找 279
10.1.7 锁定文件 279
10.1.8 使用NetworkStream 对象 279
10.1.9 使用NetworkStream 时处理网络错误 281
10.1.10 对NetworkStream对象 执行异步读/写操作 281
10.1.11 使用MemoryStream类 283
10.1.12 产品订购应用 程序示例 286
10.2 使用StreamReader和 StreamWriter类 295
10.2.1 创建StreamReader 和StreamWriter对象 295
10.2.2 用StreamReader对象 读取文件流 295
10.2.3 在StreamReader 和StreamWriter对象 中使用编码 296
10.2.4 使用编码方式时指定 字节顺序 297
10.2.5 使用StreamWriter写入 文件流 297
10.3 用StringReader和StringWriter 处理字符串 298
10.4 使用File、Path和 Directory类 298
10.4.1 用File类创建文件 299
10.4.2 使用Directory类 300
10.4.3 与.NET Framework 完整版的不同 301
10.4.4 使用Path类 301
10.5 本章小结 302
第11章 联网 303
11.1 使用System.Net命名空间 303
11.2 使用WebRequest和 WebResponse类 304
11.2.1 理解WebRequest 和WebResponse 的基本要点 304
11.2.2 使用HTTP获取资源 305
11.2.3 处理错误 307
11.2.4 使用HTTP标头 308
11.2.5 网络传输编码 310
11.2.6 使用HTTP GET和HTTP POST向服务器 发送数据 311
11.2.7 cookie的替代方法 313
11.2.8 使用SSL确保网络 传输的安全 315
11.2.9 使用NetworkCredential 类验证请求 316
11.2.10 异步Web请求 317
11.2.11 通过代理服务器进行 网络请求 323
11.3 判断设备是否连接 323
11.4 使用套接字 324
11.4.1 了解使用仿真器和 ActiveSync的IP网络 324
11.4.2 执行DNS查找 326
11.4.3 使用System.Net.Sockets. TcpListener 326
11.4.4 使用System.Net.Sockets. TcpClient 328
11.4.5 使用System.Net.Sockets. UdpClient 333
11.4.6 使用Socket类 334
11.4.7 红外线通信 336
11.5 串行通信 342
11.6 本章小结 348
第12章 .NET Compact Framework 应用程序安全性 349
12.1 手持设备安全性的基础 350
12.1.1 用户验证 350
12.1.2 使用杀毒软件 351
12.1.3 使用防火墙 351
12.2 确保无线数据传输的安全性 351
12.2.1 使用虚拟专有网络 352
12.2.2 使用SSL 353
12.2.3 防止欺骗 354
12.3 验证和授权移动客户 354

12.3.1 在.NET Compact Framework应用程序 中提供登录凭据 356
12.3.2 为移动用户授予 适当的权限 357
12.4 确保XML Web服务的安全 357
12.5 确保SQL Server CE 连接的安全 362
12.6 确保数据在设备上的安全 363
12.6.1 在手持设备上使用加密 363
12.6.2 确保SQL Server CE 数据库的安全 363
12.7 编程设计.NET Compact Framework的安全性 365
12.7.1 理解.NET Compact Framework的 安全性策略 366
12.7.2 使用安全编码惯例 366
12.7.3 在代码中存储 用户名和密码 367
12.7.4 避免恶意下载 368
12.8 本章小结 369
第IV部分 连接数据
第13章 访问数据 373
13.1 缓存、复制更改和解决冲突 373
13.1.1 缓存 374
13.1.2 复制更改 374
13.1.3 解决冲突 375
13.2 避免复制 375
13.3 在网络大部分时间断开的解决 方案中同步数据 376
13.3.1 使用ActiveSync文件 复制进行同步 376
13.3.2 使用SQL Server CE RDA 进行同步 378
13.3.3 使用SQL Server 2000 合并复制进行同步 379
13.4 在大部分时间都连接的解决 方案中同步数据 380
13.4.1 直接访问SQL Server 2000 380
13.4.2 实现移动Web应用 程序 381
13.4.3 使用Web服务 381
13.5 使用其他网络解决方案 382
13.5.1 使用套接字 382
13.5.2 使用红外线 383
13.6 本章小结 384
第14章 ADO.NET数据对象 385
14.1 ADO.NET的优点 385
14.1.1 ADO.NET是无连接的 385
14.1.2 ADO.NET以XML 为中心 386
14.1.3 ADO.NET允许 数据绑定 386
14.2 引入ADO.NET对象 386
14.2.1 理解DataSet对象 387
14.2.2 表示数据表 388
14.2.3 用DataRelation对象 定义关系 388
14.2.4 理解DataView对象 388
14.3 从零开始构建一个DataSet 对象 389
14.3.1 添加DataSet、DataTable 和DataColumn对象 390
14.3.2 添加DataRow对象 390

14.3.3 对DataRow对象进行 读取、更新或删除操作 391
14.3.4 查找DataRow对象 391
14.3.5 查看DataSet对象的XML 表示 392
14.3.6 使用类型化的DataSet 对象 393
14.3.7 使用DataSet Designer 创建DataSet对象 393
14.3.8 加载存储的架构 394
14.4 使用多表DataSet对象 395
14.4.1 在一个多表DataSet对象 中定义关系 395
14.4.2 在DataRelation对象中 设置约束 398
14.5 在本地保存DataSet对象 399
14.5.1 写入数据 400
14.5.2 读取数据 400
14.5.3 综合使用所有的技术 401
14.6 使用更新、数据视图和 数据绑定 404
14.6.1 跟踪DataSet更新 404
14.6.2 使用DataView对象 405
14.6.3 数据绑定 407
14.7 本章小结 411
第15章 与SQL Server集成数据 412
15.1 分析数据访问体系结构 412
15.1.1 使用SQL Server 2000 托管提供程序 412
15.1.2 与桌面版.NET Framework 的差异 413
15.1.3 System.Data.SqlClient 命名空间 414
15.2 检索数据 416
15.2.1 创建SqlConnection 对象 417
15.2.2 使用SqlCommand 对象 419
15.2.3 使用SqlDataReader 对象 420
15.2.4 使用SqlException 对象 421
15.3 绑定数据 421
15.4 更新数据 425
15.4.1 更新被绑定数据 426
15.4.2 使用SqlCommand- Builder 428
15.4.3 处理更新过程 429
15.5 使用SQL Server存储过程 431
15.5.1 在.NET Compact Framework 中使用事务 432
15.5.2 使用获取数据的 存储过程 432
15.5.3 使用带参数的 存储过程 435
15.5.4 执行不返回数据的 存储过程 436
15.6 SQLXML 436
15.6.1 在应用程序中使用 SQLXML 437
15.6.2 其他阅读材料 438
15.7 本章小结 438
第16章 使用XML Web服务 439
16.1 XML Web服务的体系结构 439
16.2 XML Web服务的基础结构 440
16.2.1 XML Web服务目录 441
16.2.2 XML Web服务发现 441
16.2.3 XML Web服务描述 442
16.2.4 XML Web服务 连网格式 443
16.3 XML Web服务的运行概况 444
16.3.1 XML Web服务客户端 444
16.3.2 运行时的Web服务 445
16.4 Compact Framework的限制 445
16.5 一个简单的XML Web服务 446
16.6 这个XML Web服务的 客户程序 449
16.6.1 Web引用 449
16.6.2 生成代理 451
16.6.3 代理类允许动态Web 服务URL 451
16.6.4 使用XML Web服务 451
16.7 返回数据集的Web服务 452
16.7.1 TimesheetService Web 服务 453
16.7.2 使用类型化数据集的XML Web服务客户程序 455
16.7.3 修改Web服务使用 标准数据集 455
16.7.4 使用标准数据集的Web 服务客户程序 456
16.7.5 异步操作 457
16.8 返回数据集进行更新 458
16.9 设计XML Web服务时需要 考虑的问题 459
16.10 本章小结 460
第17章 使用SQL Server CE 461
17.1 在智能设备上使用SQL Server 461
17.2 编制SQL Server CE应用程序 464
17.2.1 SqlServerCe数据编程 对象概述 466
17.2.2 检索数据行 469
17.3 对远程数据访问进行编程 475
17.3.1 RDA体系结构概述 476
17.3.2 安装RDA服务器 477
17.3.3 将数据拉到本地 数据库中 482
17.3.4 将修改推回远程 数据库 489
17.3.5 在远程数据库上 运行命令 490
17.3.6 RDA疑难解答 491
17.4 使用合并复制 492
17.4.1 合并复制的架构概述 492
17.4.2 建立合并复制 494
17.4.3 对合并复制进行编程 499
17.5 在RDA和合并复制间 进行选择 502
17.6 本章小结 503
第V部分 高级移动应用程序开发技术
第18章 自定义控件 507
18.1 从Toolbox控件继承 507
18.2 从控件类继承 510
18.3 添加自定义事件:SlideShow 516
18.3.1 向控件中添加 自定义事件 520
18.3.2 使用计时器来增强 SlideShow控件 521
18.4 将自定义控件放入其自己的 程序集中 523
18.5 创建组件 523
18.6 创建设计时的自定义控件 526
18.7 本章小结 530
第19章 全球化与本地化 531
19.1 区域性及CultureInfo类 531
19.2 对应特定区域性的数据 535
19.2.1 特定区域性的数字 536
19.2.2 与区域性相关的 字符串比较 538
19.2.3 针对特定区域性的 日期和时间值 540
19.3 字符编码 545
19.4 本地化的资源文件 546
19.4.1 创建本地化资源 546
19.4.2 检索本地化资源 548
19.5 本章小结 551
第20章 多线程 552
20.1 了解多线程 552
20.1.1 了解多线程的优势 553
20.1.2 避免多线程的陷阱 555
20.2 调度 555
20.3 创建多线程的应用程序 556
20.3.1 构建新的Thread对象 556
20.3.2 使线程休眠 558
20.3.3 使用计时器 558
20.3.4 使用线程池 560
20.4 线程同步与线程安全 561
20.4.1 判断线程在使用 哪些内存 562
20.4.2 了解线程安全 564
20.4.3 .NET Compact Framework 的同步特性 564
20.4.4 避免死锁 571
20.4.5 创建线程安全的包装器 571
20.5 使用控件来实现多线程 572
20.6 比较这两种框架 573
20.6.1 设置线程优先级 573
20.6.2 使用Join方法 574
20.6.3 使用Suspend和Resume 方法 574
20.6.4 使用应用程序域 574
20.6.5 使用Thread类的Abort 和Interrupt方法 574
20.6.6 使用ReaderWriterLock 类 574
20.6.7 使用后台线程 575
20.6.8 使用Synchronization- Attribute类 575
20.7 本章小结 575
第21章 图形编程 576
21.1 用于图形编程的类 576
21.2 用于绘制形状、位图和 文本的类 576
21.2.1 Pen类 577
21.2.2 SolidBrush类 577
21.2.3 Color类 577
21.2.4 Font类 578
21.2.5 Icon类 578
21.2.6 Bitmap类 578
21.2.7 Point结构 579
21.2.8 Rectangle结构 580
21.2.9 Region类 580
21.3 Graphics类的各种绘制方法 580
21.3.1 DrawImage方法 582
21.3.2 DrawIcon方法 584
21.3.3 FillRegion方法 584
21.3.4 DrawRectangle 和FillRectangle方法 585
21.3.5 DrawLine方法 587
21.3.6 DrawString方法 588
21.3.7 DrawEllipse和FillEllipse 方法 589
21.3.8 DrawPolygon和FillPolygon 方法 590
21.3.9 OnPaint方法 597
21.4 本章小结 597
第22章 与本机代码协同工作 599
22.1 认识托管代码和非托管代码 599
22.2 编写自定义非托管DLL 600
22.2.1 选择eMbedded Visual C++ 4项目类型 600
22.2.2 指定针对不同处理器 的选项 600
22.2.3 处理C++的命名 辗压问题 601
22.2.4 导出入口点 601
22.2.5 使用DUMPBIN 判断入口点 602
22.2.6 部署非托管DLL 602
22.2.7 确保不同的Windows CE 版本之间的兼容性 603
22.3 使用P/Invoke 603
22.3.1 声明非托管代码函数 603
22.3.2 使用C#声明非托管 代码函数 603
22.3.3 使用Visual Basic .NET 声明非托管代码函数 604
22.3.4 调用非托管代码函数 604
22.3.5 处理运行时错误 604
22.3.6 处理特别情况:EntryPoint 属性 605
22.3.7 封送参数 606
22.3.8 对值类型和引用类型 进行封送 606
22.3.9 传递值参数 606
22.3.10 以其他类型封送 607
22.3.11 使用指向性特性 607
22.3.12 使用符号常量和 枚举类型 608
22.3.13 处理引用类型 609
22.3.14 传递数组 609
22.3.15 传递String和 StringBuilder变量 610
22.3.16 传递结构及类 611
22.3.17 封送更复杂的结构 613
22.3.18 调用约定 616
22.3.19 使用回调和委托 617
22.3.20 封送DateTime对象 617
22.4 调用Windows CE API 617
22.4.1 检索Windows 错误代码 619
22.4.2 理解MessageWindow 组件 619
22.4.3 使用MessageWindow 来截取消息 625
22.5 调用COM对象 632
22.6 为COM对象使用包装函数 632
22.6.1 开发一个简单的 COM包装 633
22.6.2 用COM包装进行 状态维护 637
22.7 本章小结 641
第23章 迁移eMbedded Visual Tools应用程序 和跨框架开发 642
23.1 迁移eMbedded Visual Tools 应用程序 642
23.1.1 双重兼容性 643
23.1.2 语言变化 643
23.1.3 用户界面编程模型 644
23.1.4 ActiveX控件 644
23.1.5 分离用户界面和 业务逻辑 644
23.1.6 过渡安排 644
23.1.7 数据库 644
23.1.8 COM Interop 645
23.2 编写跨框架的应用程序 645
23.2.1 可重定目标的程序集 645
23.2.2 在运行时确定操作系统 647
23.2.3 条件编译 648
23.3 本章小结 649
附录A .NET Compact Framework 基类库 650

商品标签

购买记录(近期成交数量0)

还没有人购买过此商品
总计 0 个记录,共 1 页。 第一页 上一页 下一页 最末页

用户评论(共0条评论)

  • 暂时还没有任何用户评论
总计 0 个记录,共 1 页。 第一页 上一页 下一页 最末页
用户名: 匿名用户
E-mail:
评价等级:
评论内容:
验证码: captcha