datagridview 添加项目数据源 怎么连不上数据库

m6851778 2013-12-06 10:12:03

直接操作设计图页面datagridview右上角的小三角来添加 自己用SQL 2005可以连本地数据库和服务器数据库
...全文
295 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
超级橡树 2013-12-06
  • 打赏
  • 举报
回复
要确认你选择的SQL Server、连接的登陆方式、选择的数据库均正确。
sswwee 2013-12-06
  • 打赏
  • 举报
回复
是啊,我记得用vs属性里设就有问题,直接sqlconntion多好
wind_cloud2011 2013-12-06
  • 打赏
  • 举报
回复
http://blog.sina.com.cn/s/blog_6d8d28670100w781.html,看看这个解决办法试试
m6851778 2013-12-06
  • 打赏
  • 举报
回复
引用 楼主 m6851778 的回复:
直接操作设计图页面datagridview右上角的小三角来添加 自己用SQL 2005可以连本地数据库和服务器数据库
我是想用可视化操作简单些实现 你说的我都有看 没检查出问题 最后还是靠代码实现了。。。
本文档不准备面面俱到地介绍DataGridView,而是着眼于深入地介绍一些技术点的高级特性。 本文档按逻辑分为5个章节,首先是结构和特性的概览,其次是内置的列/单元格类型的介绍,再次是数据操作相关的内容,然后是主要特性的综述,最后是最佳实践。 大部分章节含有一个“Q & A”部分,来回答该章节相关的一些常见问题。注意,某些问题会由于知识点的关联性重复出现在多个章节。这些问题、答案及其附带的示例代码都包含在本文档的附录部分。 一、DataGridView技术点的高级特性。 11 1 何为DataGridView 11 1.1 DataGridView和DataGrid 之间的区别 11 1.2 DataGridView的亮点 12 2 DataGridView的结构 13 2.1 结构元素(Architecture Elements) 13 2.2 单元格和组(Cells and Bands) 13 2.3 DataGridView的单元格 (DataGridViewCell) 13 2.3.1 DataGridViewCell的工作机制 14 2.3.2 常见问题 15 2.4 DataGridView的列(DataGridViewColumn) 16 2.5 DataGridView的编辑控件(Editing Controls) 16 2.6 DataGridViewRow 17 2.6.1 常见问题 17 3 列/单元格类型揭密(column/cell types) 17 3.1 DataGridViewTextBoxColumn 18 3.2 DataGridViewCheckBoxColumn 19 3.3 DataGridViewImageColumn 19 3.4 DataGridViewButtonColumn 19 3.5 DataGridViewComboBoxColumn 20 3.5.1 DataError事件和ComboBox列 20 3.5.2 常见问题 20 3.6 DataGridViewLinkColumn 21 4 操作数据(Working with Data) 21 4.1 数据输入和验证的相关事件 21 4.1.1 数据验证相关事件的顺序 21 4.1.2 验证数据 22 4.1.3 在新行中的数据输入(Data Entry in the New Row) 22 4.1.3.1 显示新行 22 4.1.3.2 为生成的新行添加默认值 22 4.1.3.4 在新行中输入数据 23 4.1.3.5 自定义新行的可视化效果 23 4.1.3.6 新行的排序 24 4.1.3.7 关于新行,还要注意: 24 4.1.3.8 Virtual Mode下的新行 24 4.2 关于Null值 24 4.2.1 NullValue属性 24 4.2.2 DataSourceNullValue属性 25 4.3 DataError事件 25 4.4 数据绑定模式(Databound modes) 26 4.4.1 非绑定模式(Unbound Mode) 26 4.4.2 绑定模式(Bound Mode) 26 4.4.2.1 有效的数据源 27 4.4.3 虚拟模式 27 4.4.4 混合模式 – 绑定与非绑定模式 27 4.4.5 常见问题 28 5 特性综览(Overview of features) 28 5.1 样式(Styling) 28 5.1.1 The DataGridViewCellStyle Class 29 5.1.2 Using DataGridViewCellStyle Objects 29 5.1.3 Style Inheritance 30 5.1.4 Setting Styles Dynamically 34 5.2 Custom painting 35 5.2.1 Paint Parts 35 5.3.1 在Windows窗体DataGridView控件调整大小选项 39 5.3.2 Resizing with the Mouse用鼠标调整大小 42 5.3.3 Automatic Sizing自动调整大小 43 5.3.4 Programmatic Resizing编程调整大小 45 5.3.5 Customizing Content-based Sizing Behavior自定义基于内容的调整大小行为 46 5.3.6 Content-based Sizing Options基于内容的调整大小选项 47 5.4 Selection modes选择模式 47 5.4.1 Programmatic Selection编程选择 49 5.5 滚动(Scrolling) 49 5.5.1 Scroll event Scroll事件 49 5.5.2 Scroll bars滚动条 50 5.5.3 Scrolling Properties滚动属性 50 5.6 Sorting排序 50 5.6.1 Programmatic Sorting编程排序 52 5.6.2 Custom Sorting自定义排序 53 5.6.3 Common questions and scenarios常见问题及案例 54 5.7 Border styles边框样式 55 5.7.1 Standard Border Styles标准边框样式 55 5.7.2 Advanced Border Styles高级边框风格 56 5.8 Enter-Edit modes输入,编辑模式 57 5.9 Clipboard copy modes剪贴板拷贝模式 58 5.10 Frozen columns/rows冻结的列/行 60 5.11 Implementing Custom cells and editing controls/cells实现自定义和编辑控制单元格/单元格 60 5.11.1 IDataGridViewEditingControl 接口 61 5.11.2 IDataGridViewEditingCell 接口 61 5.12 Virtual mode虚拟模式 61 5.12.1 Bound Mode and Virtual Mode绑定模式和虚拟模式 62 5.12.2 Supplementing Bound Mode补充绑定模式 62 5.12.3 Common questions and scenarios常见问题及案例 62 5.12.4 Replacing Bound Mode更换绑定模式 63 5.12.5 Virtual-Mode Events虚拟模式事件 63 5.12.6 Best Practices in Virtual Mode在虚拟模式下的最佳实践 66 5.13 容量(Capacity) 66 6 最佳实践(Best Practices) 67 6.1 Using Cell Styles Efficiently使用高效单元格样式 67 6.2 Using Shortcut Menus Efficiently使用高效快捷菜单 68 6.3 Using Automatic Resizing Efficiently使用自动调整大小高效 69 6.4 Using the Selected Cells, Rows, and Columns Collections Efficiently高效使用选定的单元格,行和列的集合 69 6.5 Using Shared Rows 使用共享行 70 6.6 Preventing Rows from Becoming Unshared 防止行成为非共享 72 附录 A – FAQ 75 1. 如何使指定的单元格不可编辑? 75 2. 如何让一个单元格不可用(disable)? 75 3. 如何避免用户将焦点设置到指定的单元格? 77 4. 如何使所有单元格总是显示控件(不论它是否处于编辑状态)? 77 5. Why does the cell text show up with “square” characters where they should be new lines(TODO,未能实现该效果)? 78 6. 如何在单元格内同时显示图标和文本? 78 7. 如何隐藏一列? 80 8. 如何避免用户对列排序? 81 9. 如何针对多个列排序? 81 9.1 将数据绑定到DataGridView时 81 9.2 Unbound DataGridView 取消绑定 82 9.2.1 Custom Sorting Using the SortCompare Event 使用排序结束时间实现用户自定义排序 82 9.2.2 Custom Sorting Using the IComparer Interface使用IComparer接口实现自定义排序 84 10. 如何为编辑控件添加事件处理函数? 86 11. 应在何时移除编辑控件的事件处理函数? 87 12. 如何处理ComboBox列中控件的SelectIndexChanged事件? 87 13. 如何通过拖放调整行的顺序? 87 14. 如何调整最后一列的宽度使其占据网格的剩余客户区? 89 15. 如何让TextBox类型的单元格支持换行? 89 16. 如何使Image列不显示任何图像(字段值为null时)? 90 17. 如何能够在ComboBox类型的单元格中输入数据? 90 18. How do I have a combo box column display a sub set of data based upon the value of a different combo box column(TODO)? 91 19. 如何在用户编辑控件的时候(而不是在验证时)就显示错误图标? 92 20. 如何同时显示绑定数据和非绑定数据? 94 21. How do I show data that comes from two tables(TODO)?如何显示来自两个数据源的数据? 96 22. 如何显示主从表? 97 23. 如何在同一DataGridView中显示主从表? 99 24. 如何避免用户对列排序? 99 25. 如何在点击工具栏按钮的时候将数据提交到数据库? 99 26. 如何在用户删除记录时显示确认对话框? 99
vs2015+数据库,需要建的数据表如下: 1. “考试成绩管理系统用户登录”功能 具体要求: (1) 按照图示排列相应的控件,控件名称自定义,其中,界面中的图片可以不加; (2) 当输入正确的用户名和密码时,登录到主系统,如图所示,并且用户名或密码输入不正确时系统有所提示;当单击【取消】按钮时,用户名和密码被清空; (3) 程序中用到的数据库名为SCOREINFO,数据表名为userinfo,数据表结构如下图所示: (4) 数据表中的用户名和密码如下图。 2. 点击主窗体的“密码修改”菜单,完成“密码修改”功能,程序运行如下图所示: 具体要求: (1)此题必须使用数据库连接完成,原始密码必须为数据表里原有的数据,不使用数据库完成的为0分。 (2)需要建立数据库SCOREINFO及数据表userinfo,表的结构及数据第一部分的内容: (3)要有“原始密码输入错误”、“原始密码不能为空”及“两次输入密码不一致”的错误提示; (4)当单击【保存】按钮,新密码被更新到数据表中,不能更新的为0分; (5)单击【关闭】按钮,窗口关闭。 (6)3个Label;3个TextBox;2个Button 3. 完成“成绩查询”功能,程序运行如下图所示: 具体要求: (1) 按照图示排列相应的控件,界面下方是DataGridView控件; (2)程序用到的数据库名为SCOREINFO,数据表名为score,表结构如下: (3)完成的MainForm_Load事件处理程序:当加载窗体时,直接在窗体的dataGridView1控件中显示数据表的所有记录; (4)可以设查询条件:首先在组合框comboBox1中选择查询条件,并在textBox1中输入条件值(可以模糊查询,如按照姓名查询时,输入“王”,可以查所有姓王的同学的成绩),单击查询将结果显示在dataGridView1控件中。 (5)所需控件及属性:1个GroupBox,1个Label,Text为选择查询条件;1个ComboBox(Items:学号、姓名);1个TextBox;1个Button,Text为查询;1个DataGridView 4. 完成“课程信息修改”功能,程序运行如下图所示: 具体要求: (1)按照图示排列相应的控件,控件名称自定义,其中,程序刚开始运行时,“学分”和“课程编码”的文本框是只读的; (2)在数据库名为SCOREINFO中,创建数据表名为course,表结构如下: (3)当单击【查询】时,直接在窗体的dataGridView2控件中显示数据表的所有记录; (4)当选中DataGridView控件中的某一行记录时(DataGridView控件的Mouse_Click事件),“课程名字”、“学分”、“课程代码”文本框中分别显示该项对应的课程信息; (5)当选中某一行记录并单击【编辑】按钮时,【编辑】按钮变为【保存修改】,同时“学分”和“课程编码”的文本框恢复正常(ReadOnly属性为false);在文本框中修改相应的信息后单击【保存修改】,将修改后的数据更新到数据表中。 (6)所需控件及属性:1个GroupBox,3个Label;3个TextBox(textBox2属性ReadOnly为True,textBox3属性ReadOnly为True);2个Button;1个DataGridView 5. 完成“课程信息删除”功能,程序运行如下图所示: 具体要求: (1)按照图示排列相应的控件,控件名称自定义,其中,程序刚开始运行时,“学分”和“课程编码”的文本框是只读的; (2)数据表名为course,表结构同第4部分: (3)当单击【查询】时,直接在窗体的dataGridView控件中显示数据表的所有记录; (4)当选中DataGridView控件中的某一行记录时,“课程名字”、“学分”、“课程代码”文本框中分别显示该项对应的课程信息; (5)当选中某一行记录并单击【删除】按钮时,则该行从数据表中删除。 (6)所需控件:3个Label;3个TextBox(textBox2属性ReadOnly为True,textBox3属性ReadOnly为True);2个Button;1个DataGridView 6. 完成“课程信息添加”功能,程序运行如下图所示: 具体要求: (1)按照图示排列相应的控件,控件名称自定义; (2)程序用到的数据库和数据表名为course,表结构如下同第四部分: (3)当单击【查询】时,直接在窗体的dataGridView1控件中显示数据表的所有记 (4)当选中DataGridView控件中的某一行记录时,“课程名字”、“学分”、“课程代码”文本框中分别显示该项对应的课程信息; (5)当单击【添加】按钮时,在文本框中添加新的内容并将新内容添加到数据表中,并且在DataGridView控件中显示出新的课程信息 (6)所需控件:3个Label;3个TextBox;2个Button;1个DataGridView
Visual C++ 2005入门经典.pdf(整理并添加所有书签) ,看书的时候更方便. 封面 目录 第1章 使用Visual C++ 2005 编程 1.1 .NET Framework 1.2 CLR 1.3 编写C++应用程序 1.4 学习windows编程 1.4.1 学习c++ 1.4.2 C++标准 1.4.3 控制台应用程序 1.4.4 Windows编程概念 1.5 集成开发环境简介 1.6 使用IDE 1.6.1 工具栏选项 1.6.2 可停靠的工具栏 1.6.3 文档 1.6.4 项目和解决方案 1.6.5 设置Visual C++2005的选项 1.6.6 创建和执行windows应用程序 1.6.7 创建windows Forms应用程序 1.7 小结 第2章 数据、变量和计算 2.1 C++程序结构 2.1.1 程序注释 2.1.2 #include指令——头文件 2.1.3 命名空间和using声明 2.1.4 main()函数 2.1.5 程序语句 2.1.6 空白 2.1.7 语句块 2.1.8 自动生成的控制台程序 2.2 定义变量 2.2.1 命名变量 2.2.2 C++中的关键字 2.2.3 声明变量 2.2.4 变量的初值 2.3 基本数据类型 2.3.1 整型变量 2.3.2 字符数据类型 2.3.3 整型修饰符 2.3.4 布尔类型 2.3.5 浮点类型 2.3.6 ISO/ANSI C++中的基本类型 2.3.7 字面值 2.3.8 定义数据类型的同义词 2.3.9 具有特定值集的变量 2.3.10 指定枚举常量的类型 2.4 基本的输入输出操作 2.4.1 从键盘输入 2.4.2 到命令行的输出 2.4.3 格式化输出 2.4.4 转义序列 2.5 C++中的计算 2.5.1 赋值语句 2.5.2 算术运算 2.5.3 计算余数 2.5.4 修改变量 2.5.5 增量和减量运算符 2.5.6 计算的顺序 2.6 变量类型和类型强制转换 2.6.1 对操作数进行类型强制转换的规则 2.6.2 赋值语句中的类型强制转换 2.6.3 显式类型强制转换 2.6.4 老式的类型强制转换 2.6.5 按位运算符 2.7 了解存储时间和作用域 2.7.1 自动变量 2.7.2 决定变量声明的位置 2.7.3 全局娈量 2.7.4 静态变量 2.8 命名空间 2.8.1 声明命名空间 2.8.2 多个命名空间 2.9 C++/CLI编程 2.9.1 C++/CLI特有的基本数据类型 2.9.2 命令行上的C++/CLI输出 2.9.3 C++/CLI特有的功能——格式化输出 2.9.4 C++/CLI的键盘输入 2.9.5 使用safe cast 2.9.6 C++/CLI枚举 2.10 小结 2.11 练习题 第3章 判断和循环 3.1 比较数据值 3.1.1 if语句 3.1.2 嵌套if语句 3.1.3 扩展的if语句 3.1.4 嵌套的if-else语句 3.1.5 逻辑运算符和表达式 3.1.6 条件运算符 3.1.7 switch语句 3.1.8 无条件转移 3.2 重复执行语句块 3.2.1 循环的概念 3.2.2 for循环的变体 3.2.3 while循环 3.2.4 do-while循环 3.2.5 嵌套的循环 3.3 C++/CLI编程 3.4 小结 3.5 练习 第4章 数组、字符串和指针 4.1 处理多个相同类型的数据值 4.1.1 数组 4.1.2 声明数组 4.1.3 初始化数组 4.1.4 字符数组和字符串处理 4.1.5 多维数组 4.2 间接数据存取 4.2.1 指针的概念 4.2.2 声明指针 4.2.3 使用指针 4.2.4 初始化指针 4.2.5 sizeof运算符 4.2.6 常量指针和指向常量的指针 4.2.7指针和数组 4.3 动态内存分配 4.3.1 堆的别名——自由存储器 4.3.2 new和delete运算符 4.3.3 为数组动态分配内存 4.3.4 多维数组的动态分配 4.4 使用引用 4.4.1 引用的概念 4.4.2 声明并初始化引用 4.5 C++/CLI编程 4.5.1 跟踪句柄 4.5.2 CLR数组 4.5.3 字符串 4.5.4 跟踪引用 4.5.5 内部指针 4.6 小结 4.7 练习 第5章 程序结构(1) 5.1 理解函数 5.1.1 需要函数的原因 5.1.2 函数的结构 5.1.3 使用函数 5.2 给函数传递实参 5.2.1 按值传递机制 5.2.2 给函数传递指针实参 5.2.3 给函数传递数组 5.2.4 给函数传递引用实参 5.2.5 使用const修饰符 5.2.6 main()函数的实参 5.2.7 接受数量不定的函数实参 5.3 从函数返回值 5.3.1 返回指针 5.3.2 返回引用 5.3.3 函数中的静态变量 5.4 递归函数调用 5.5 C++/CLI编程 5.5.1 接受数量可变实参的函数 5.5.2 main()的实参 5.6 小结 5.7 练习 第6章 程序结构(2) 6.1 函数指针 6.1.1 声明函数指针 6.1.2 函数指针作为实参 6.1.3 函数指针的数组 6.2 初始化函数形参 6.3 异常 6.3.1 抛出异常 6.3.2 捕获异常 6.3.3 MFC中的异常处理 6.4 处理内存分配错误 6.5 函数重载 6.5.1 函数重载的概念 6.5.2 何时重载函数 6.6 函数模板 6.7 使用函数的示例 6.7.1 实现计算器 6.7.2 从字符串中删除空格 6.7.3 计算表达式的值 6.7.4 获得项值 6.7.5 分析数 6.7.6 整合程序 6.7.7 扩展程序 6.7.8 提取子字符串 6.7.9 运行修改过的程序 6.8 C++/CLI编程 6.8.1 理解类函数 6.8.2 CLR版本的计算器程序 6.9 小结 6.10 练习 第7章 自定义数据类型 7.1 C++中的结构 7.1.1 结构的概念 7.1.2 定义结构 7.1.3 初始化结构 7.1.4 访问结构的成员 7.1.5 伴随结构的智能帮助 7.1.6 RECT结构 7.1.7 使用指针处理结构 7.2 数据类型、对象、类和实例 7.2.1 类的起源 7.2.2 类的操作 7.2.3 术语 7.3 理解类 7.3.1 定义类 7.3.2 声明类的对象 7.3.3 访问类的数据成员 7.3.4 类的成员函数 7.3.5 成员函数定义的位置 7.3.6 内联函数 7.4 类构造函数 7.4.1 构造函数的概念 7.4.2 默认的构造函数 7 4.3 在类定义中指定默认的形参值 7.4.4 在构造函数中使用初始化列表 7.5 类的私有成员 7.5.1 访问私有类成员 7.5.2 类的友元函数 7.5.3 默认复制构造函数 7.6 this指针 7.7 类的const对象 7.7.1 类的const成员函数 7.7.2 类外部的成员函数定义 7.8 类对象的数组 7.9 类的静态成员 7.9.1 类的静态数据成员 7.9.2 类的静态函数成员 7.10 类对象的指针和引用 7.10.1 类对象的指针 7.10.2 类对象的引用 7.11 C++/CLI编程 7.11.1 定义数值类类型 7.11.2 定义引用类类型 7.11.3 类属性 7.11.4 initonly字段 7.11.5 静态构造函数 7.12 小结 7.13 练习 第8章 深入理解类 8.1 类的析构函数 8.1.1 析构函数的概念 8.1.2 默认的析构函数 8.1.3 析构函数与动态内存分配 8.2 实现复制构造函数 8.3 在变量之间共享内存 8.3.1 定义联台 8.3.2 匿名联合 8.3.3 类和结构中的联合 8.4 运算符重载 8.4.1 实现重载的运算符 8.4.2 实现对运算符的完全支持 8.4.3 重载赋值运算符 8.4.4 重载加法运算符 8.4.5 重载递增和递减运算符 8.5 类模板 8.5.1 定义类模板 8.5.2 根据类模板创建对象 8.5.3 使用有多个形参的类模板 8.6 使用类 8.6.1 类接口的概念 8.6.2 定义问题 8.6.3 实现CBox类 8.6.4 定义CBox类 8.6.5 使用CBox类 8.7 组织程序代码 8.8 C++/CLI编程 8.8.1 在数值类中重载运算符 8.8.2 重载递增和递减运算符 8.8.3 在引用类中重载运算符 8.9 小结 8.1O 练习 第9章 类继承和虚函数 9.1 面向对象编程的基本思想 9.2 类的继承 9.2.1 基类的概念 9.2.2 基类的派生类 9.3 继承机制下的访问控制 9.3.1 派生类中构造函数的操作 9.3.2 声明类的保护成员 9.3.3 继承类成员的访问级别 9.4 派生类中的复制构造函数 9.5 友元类成员 9.5.1 友元类 9.5.2 对类友元关系的限制 9.6 虚函数 9.6.1 虚函数的概念 9.6.2 使用指向类对象的指针 9.6.3 使用引用处理虚函数 9.6.4 纯虚函数 9.6.5 抽象类 9.6.6 间接基类 9.6.7 虚析构函数 9.7 类类型之间的强制转换 9.8 嵌套类 9.9 C++/CLI编程 9.9.1 C++/CLI类的继承 9.9.2 接口类 9.9.3 定义接口类 9.9.4 类和程序集 9.9.5 被指定为new的函数 9.9.6 委托和事件 9.9.7 引用类的析构函数和结束函数 9.9.8 通用类 9.10 小结 9.11 练习 第10章 调试技术 10.1 理解调试 10.1.1 程序故障 10.1.2 常见故障 10.2 基本的调试操作 10.2.1 设置断点 10.2.2 设置跟踪点 10.2.3 启动调试模式 10.2.4 修改变量的值 10.3 添加调试代码 10.3.1 使用断言 10.3.2 添加自己的调试代码 10.4 调试程序 10.4.1 调用堆栈 10.4.2 单步执行到出错位置 10.5 测试扩展的类 10.6 调试动态内存 10.6.1 检查自由存储器的函数 10.6.2 控制自由存储器的调试操作 10.6.3 自由存储器的调试输出 10.7 调试C++/CLI程序 10.8 小结 第11章 Windows编程的概念 11.1 Windows编程基础 11.1.1窗口的元素 11.1.2 Windows程序与操作系统 11.1.3事件驱动型程序 11.1.4 Windows消息 11.1.5 WindowsAPI 11.1.6.Windows数据类型 11.1.7 Windows程序中的符号 11.2 Windows程序的结构 11.2.1 WinMain()函数 11.2.2消息处理函数 11.2.3简单的Windows程序 11.3 Windows程序的组织 11.4 MFC 11.4.1 MFC标记法 11.4.2 MFC程序的组织方式 11.5使用Windows Forms 11.6小结 第12章 使用MFC编写Windows程序 12.1 MFC的文档,视图概念 12.1.1 文档的概念 12.1.2 文档界面 12.1.3 视图的概念 12.1.4 连接文档和视图 12.1.5 应用程序和MFC 12.2 创建MFC应用程序 12.2.1 创建SDI应用程序 12.2.2 MFCApplicationwizard的输出 12.2.3 创建MDI应用程序 12.3 小结 12.4 练习 第13章 处理菜单和工具栏 13.1 与Windows进行通信 13.1.1 了解消息映射 13.1.2 消息类别 13.1.3 处理程序中的消息 13.2 扩充Sketcher程序 13.3 菜单的元素 13.4 为菜单消息添加处理程序 13.4.1 选择处理菜单消息的类 13.4.2 创建菜单消息函数 13.4.3 编写菜单消息函数的代码 13.4.4 添加更新用户界面的消息处理程序 13.5 添加工具栏按钮 13.5.1 编辑工具栏按钮的属性 13.5.2 练习使用工具栏按钮 13.5.3 添加工具提示 13.6 小结 13.7 练习题 第14章 在窗口中绘图 14.1 窗口绘图的基础知识 14.1.1 窗口客户区 14.1.2 Windows图形设备界面 14.2 Visual C++中的绘图机制 14.2.1 应用程序中的视图类 14.2.2 CDC类 14.3 实际绘制图形 14.4 对鼠标进行编程 14.4.1 鼠标发出的消息 14.4.2 鼠标消息处理程序 14.4.3 使用鼠标绘图 14.5 练习使用Sketcher程序 14.5.1 运行这个示例 14.5.2 捕获鼠标消息 14.6 小结 14.7 练习题 第15章 创建文档和改进视图 15.1 什么是集合类 15.1.1 集合的类型 15.1.2 类型安全的集合类 15.1.3 对象集合 15.1.4 类型化指针集合 15.2 使用CList模板类 15.2.1 绘制曲线 15.2.2 定义CCurve类 15.2.3 实现CCurve类 15.2.4 练习使用CCurve类 15.3 创建文档 15.4 改进视图 15.4.1 更新多个视图 15.4.2 滚动视图 15.4.3 使用MM_LOENGLISH映射模式 15.5 删除和移动形状 15.6 实现上下文菜单 15.6.1 关联菜单和类 15.6.2 选择上下文菜单 15.6.3 醒目显示元素 15.6.4 处理菜单消息 15.7 处理被屏蔽的元素 15.8 小结 15.9 练习 第16章 使用对话框和控件 16.1 理解对话框 16.2 理解控件 16.3 创建对话框资源 16.4 对话框的编程 16.4.1 添加对话框类 16.4.2 模态和非模态对话框 16.4.3 显示对话框 16.5 支持对话框控件 16.5.1 初始化控件 16.5.2 处理单选按钮消息 16.6 完成对话框的操作 16.6.1 给文档类添加存储线宽的成员 16.6.2 给元素添加线宽 16.6.3 在视图中创建元素 16.6.4 练习使用对话框 16.7 使用微调按钮控件 16.7.1 添加Scale菜单项和工具栏按钮 16.7.2 创建微调按钮 16.7.3 生成比例对话框类 16.7.4 显示微调按钮 16.8 使用比例系数 16.8.1 可缩放的映射模式 16.8.2 设置文档的大小 16.8.3 设置映射模式 16.8.4 同时实现滚动与缩放 16.9 使用状态栏 16.10 使用列表框 16.10.1 删除比例对话框 16.1O.2 创建列表框控件 16.11 使用编辑框控件 16.11.1 创建编辑框资源 16.11.2 创建对话框类 16.11.3 添加Text菜单项 16.11.4 定义文本元素 16.11.5 实现CText类 16.11.6 创建文本元素 16.12 小结 16.13 练习 第17章 存储和打印文档 17.1 了解串行化 17.2 串行化文档 17.2.1 文档类定义中的串行化 17.2.2 丈档类实现中的串行化 17.2.3 基于CObject的类的功能 17.2.4 串行化的工作方式 17.2.5 如何实现类的串行化 17.3 应用串行化 17.3.1 记录文档修改 17.3.2 串行化文档 17.3.3 串行化元素类 17.4 练习串行化 17.5 移动文本 17.6 打印文档 17.7 实现多页打印 17.7.1 获取文档的总尺寸 17.7.2 存储打印数据 17.7.3 准备打印 17.7.4 打印后的清除 17.7.5 准备设备上下文 17.7.6 打印文档 17.7.7 获得文档的打印输出 17.8 小结 17.9 练习题 第18章 编写自己的DLL 18.1 了解DLL 18.1.1 DLL的工作方式 18.1.2 DLL的内容 18.1.3 DLL变体 18.2 决定放入DLL的内容 18.3 编写DLL 18.3.1 编写和使用扩展DLL 18.3.2 从DLL中导出变量和函数 18.3.3 将符号导入程序 18.3.4 实现符号从DLL的导出 18.4 小结 18.5 练习题 第19章 连接到数据源 19.1 数据库基础知识 19.2 SQL 19.2.1 使用SQL检索数据 19.2.2 使用SQL连接表 19.2.3 对记录进行排序 19.3 MFC中的数据库支持 19.4 创建数据库应用程序 19.4.1 注册ODBC数据库 19.4.2 生成MFC ODBC程序 19.4.3 了解程序结构 19.4.4 示例练习 19.5 对记录集进行排序 19.6 使用另一个记录集对象 19.6.1 添加记录集类 19.6.2 添加记录集的视图类 19.6.3 定制记录集 19.6.4 访问多个表视图 19.6.5 查看产品的订单 19.7 查看客户的详细情况 19.7.1 添加客户记录集 19.7.2 创建客户对话框资源 19.7.3 创建客户视图类 19.7.4 添加过滤器 19.7.5 实现过滤器参数 19.7.6 链接订单对话框和客户对话框 19.7.7 练习使用数据库查看器 19.8 小结 19.9 练习题 第20章 更新数据源 20.1 更新操作 20.1.1 CRecordset更新操作 20.1.2 事务 20.2 简单的更新示例 20.3 管理更新过程 20.4 向表中添加行 20.4.1 订单录入过程 20.4.2 创建资源 20.4.3 创建记录集 20.4.4 创建记录集视图 20.4.5 给对话框资源添加控件 20.4.6 实现对话框切换 20.4.7 创建订单ID 20.4.8 存储订单数据 20.4.9 为订单选择产品 20.4.10 添加新订单 20.5 小结 20.6 练习 第21章 使用Windows Forms的应用程序 21.1 理解Wqndows Forms 21.2 理解Windows Forms应用程序 21.2.1 修改窗体的属性 21.2.2 如何启动应用程序 21.3 定制应用程序GUI 21.3.1 给窗体添加控件 21.3.2 添加选项卡控件 21.3.3 使用CroupBox控件 21.3.4 使用Button控件 21.3.5 使用WebBrowser控件 21.3.6 Winning应用程序的操作 21.3.7 添加上下文菜单 21.3.8 创建事件处理程序 21.3.9 处理Limits菜单的事件 21.3.10 创建对话框 21.3.11 使用对话框 21.3.12 添加第二个对话框 21.3.13 实现Help|About菜单项 21.3.14 处理按钮单击事件 21.3.15 响应上下文莱单 21.4 小结 21.5 练习 第22章 在Windows Forms应用程序中访问数据源 22.1 使用数据源 22.2 访问并显示数据 22.3 使用DataGridView控件 22.4 在无约束模式中使用DataGridView控件 22.5 定制DataGridView控件 22.5.1 定制题头单元格 22.5.2 定制非题头单元格 22.5.3 动态设置单元格样式 22.6 使用约束模式 22.7 BindingSource组件 22.8 使用BindingNavigator控件 22.9 绑定到单独的控件 22.10 使用多个表 22.11 小结 22.12 练习 附录A C++关键字 A1 ISO/ANSI C++关键宇 A2 C++/CLI关键字 附录B ASCII码

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧