DataGridView控件文档格式.docx

上传人:b****3 文档编号:6432670 上传时间:2023-05-06 格式:DOCX 页数:106 大小:252.04KB
下载 相关 举报
DataGridView控件文档格式.docx_第1页
第1页 / 共106页
DataGridView控件文档格式.docx_第2页
第2页 / 共106页
DataGridView控件文档格式.docx_第3页
第3页 / 共106页
DataGridView控件文档格式.docx_第4页
第4页 / 共106页
DataGridView控件文档格式.docx_第5页
第5页 / 共106页
DataGridView控件文档格式.docx_第6页
第6页 / 共106页
DataGridView控件文档格式.docx_第7页
第7页 / 共106页
DataGridView控件文档格式.docx_第8页
第8页 / 共106页
DataGridView控件文档格式.docx_第9页
第9页 / 共106页
DataGridView控件文档格式.docx_第10页
第10页 / 共106页
DataGridView控件文档格式.docx_第11页
第11页 / 共106页
DataGridView控件文档格式.docx_第12页
第12页 / 共106页
DataGridView控件文档格式.docx_第13页
第13页 / 共106页
DataGridView控件文档格式.docx_第14页
第14页 / 共106页
DataGridView控件文档格式.docx_第15页
第15页 / 共106页
DataGridView控件文档格式.docx_第16页
第16页 / 共106页
DataGridView控件文档格式.docx_第17页
第17页 / 共106页
DataGridView控件文档格式.docx_第18页
第18页 / 共106页
DataGridView控件文档格式.docx_第19页
第19页 / 共106页
DataGridView控件文档格式.docx_第20页
第20页 / 共106页
亲,该文档总共106页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

DataGridView控件文档格式.docx

《DataGridView控件文档格式.docx》由会员分享,可在线阅读,更多相关《DataGridView控件文档格式.docx(106页珍藏版)》请在冰点文库上搜索。

DataGridView控件文档格式.docx

3.4DataGridViewButtonColumn13

3.5DataGridViewComboBoxColumn13

3.5.1DataError与ComboBox列13

3.6DataGridViewLinkColumn14

4操作数据15

4.1数据输入和验证的相关事件15

4.1.1数据验证相关事件的顺序15

4.1.2验证数据15

4.1.3在新行中的数据输入16

4.2关于Null值19

4.2.1NullValue属性19

4.2.2DataSourceNullValue属性19

4.3DataError事件20

4.4数据绑定模式21

4.4.1非绑定模式21

4.4.2绑定模式21

4.4.3虚拟模式22

4.4.4混合模式22

5Overviewoffeatures24

5.1Styling24

5.1.1TheDataGridViewCellStyleClass24

5.1.2UsingDataGridViewCellStyleObjects24

5.1.3StyleInheritance25

5.1.4SettingStylesDynamically28

5.2Custompainting28

5.2.1PaintParts28

5.2.2RowPrePaintandPostPaint29

5.3Autosizing30

5.3.1SizingOptionsintheWindowsFormsDataGridViewControl30

5.3.2ResizingwiththeMouse31

5.3.3AutomaticSizing32

5.3.4ProgrammaticResizing33

5.3.5CustomizingContent-basedSizingBehavior34

5.3.6Content-basedSizingOptions34

5.4Selectionmodes34

5.4.1ProgrammaticSelection35

5.5Scrolling35

5.5.1Scrollevent35

5.5.2Scrollbars35

5.5.3ScrollingProperties36

5.6Sorting36

5.6.1ProgrammaticSorting37

5.6.2CustomSorting38

5.7Borderstyles39

5.7.1StandardBorderStyles39

5.7.2AdvancedBorderStyles39

5.8Enter-Editmodes40

5.9Clipboardcopymodes40

5.10Frozencolumns/rows41

5.11ImplementingCustomcellsandeditingcontrols/cells41

5.11.1IDataGridViewEditingControl42

5.11.2IDataGridViewEditingCell42

5.12Virtualmode42

5.12.1BoundModeandVirtualMode42

5.12.2SupplementingBoundMode42

5.12.3ReplacingBoundMode43

5.12.4Virtual-ModeEvents43

5.12.5BestPracticesinVirtualMode44

5.13Capacity44

6BestPractices45

6.1UsingCellStylesEfficiently45

6.2UsingShortcutMenusEfficiently45

6.3UsingAutomaticResizingEfficiently45

6.4UsingtheSelectedCells,Rows,andColumnsCollectionsEfficiently46

6.5UsingSharedRows46

6.6PreventingRowsfromBecomingUnshared47

附录A–常见问题:

49

1.如何使指定的单元格不可编辑?

2.如何让一个单元格不可用?

3.如何避免用户将焦点设置到指定的单元格?

51

4.如何使所有单元格总是显示控件(不论它是否处于编辑状态)?

5.Whydoesthecelltextshowupwith“square”characterswheretheyshouldbenewlines?

6.如何在单元格内同时显示图标和文本?

7.如何隐藏一列?

53

8.如何避免用户对列排序?

9.如何针对多个列排序?

54

10.如何为编辑控件添加事件处理函数?

58

11.应在何时移除编辑控件的事件处理函数?

12.如何处理ComboBox列中ComboBox控件的SelectIndexChanged事件?

13.如何通过拖放调整行的顺序?

59

14.如何调整最后一列的宽度使其占据网格的剩余客户区?

60

15.如何让TextBox类型的单元格支持换行?

16.如何使Image列不显示任何图像(字段值为null时)?

61

17.如何能够在ComboBox类型的单元格中输入数据?

18.HowdoIhaveacomboboxcolumndisplayasubsetofdatabaseduponthevalueofadifferentcomboboxcolumn?

19.如何在用户编辑控件的时候(而不是在验证时)就显示错误图标?

62

20.如何同时显示绑定数据和非绑定数据?

65

21.HowdoIshowdatathatcomesfromtwotables?

66

22.如何显示主从表?

23.如何在同一DataGridView中显示主从表?

68

24.如何避免用户对列排序?

25.如何在点击工具栏按钮的时候将数据提交到数据库?

26.如何在用户删除记录时显示确认对话框?

1何为DataGridView

通过DataGridView控件,可以显示和编辑表格式的数据,而这些数据可以取自多种不同类型的数据源。

DataGridView控件具有很高的的可配置性和可扩展性,提供了大量的属性、方法和事件,可以用来对该控件的外观和行为进行自定义。

当你需要在WinForm应用程序中显示表格式数据时,可以优先考虑DataGridView(相比于DataGrid等其它控件)。

如果你要在小型网格中显示只读数据,或者允许用户编辑数以百万计的记录,DataGridView将为你提供一个易于编程和良好性能的解决方案。

DataGridView用来替换先前版本中的DataGrid,拥有较DataGrid更多的功能;

但DataGrid仍然得到保留,以备向后兼容和将来使用。

如果你要在两者中选择,可以参考下面给出的DataGrid和DataGridView之间区别的细节信息。

1.1DataGridView和DataGrid之间的区别

DataGridView提供了大量的DataGrid所不具备的基本功能和高级功能。

此外,DataGridView的结构使得它较之DataGrid控件更容易扩展和自定义。

下表描述了DataGridView提供而DataGrid未提供的几个主要功能。

DataGridView功能

描述

多种列类型

与DataGrid相比,DataGridView提供了更多的内置列类型。

这些列类型能够满足大部分常见需要,而且比DataGrid中的列类型易于扩展或替换。

多种数据显示方式

DataGrid仅限于显示外部数据源的数据。

而DataGridView则能够显示非绑定的数据,绑定的数据源,或者同时显示绑定和非绑定的数据。

你也可以在DataGridView中实现virtualmode,实现自定义的数据管理。

用于自定义数据显示的多种方式

DataGridView提供了很多属性和事件,用于数据的格式化和显示。

比如,你可以根据单元格、行和列的内容改变其外观,或者使用一种类型的数据替代另一种类型的数据。

用于更改单元格、行、列、表头外观和行为的多个选项

DataGridView使你能够以多种方式操作单个网格组件。

比如,你可以冻结行和列,避免它们因滚动而不可见;

隐藏行、列、表头;

改变行、列、表头尺寸的调整方式;

为单个的单元格、行和列提供工具提示(ToolTip)和快捷菜单。

唯一的一个DataGrid提供而DataGridView未提供的特性是两个相关表中数据的分层次显示(比如常见的主从表显示)。

你必须使用两个DataGridView来显示具有主从关系的两个表的数据。

1.2DataGridView的亮点

下表着重显示了DataGridView的主要特性,稍后会介绍它们的详细信息。

DataGridView控件特性

DataGridView提供有TextBox、CheckBox、Image、Button、ComboBox和Link类型的列及相应的单元格类型。

自定义数据的显示和操作的多种方式

此外,DataGridView提供了操作数据的多种方式,比如,你可以:

▪对数据排序,并显示相应的排序符号(带方向的箭头表示升降序)

▪对行、列和单元格的多种选择模式;

多项选择和单项选择

▪以多种格式将数据拷贝到剪贴板,包括text,CSV(以逗号隔开的值)和HTML

▪改变用户编辑单元格内容的方式

比如,你可以:

▪冻结行和列,避免它们因滚动而不可见;

▪隐藏行、列、表头;

▪改变行、列、表头尺寸的调整方式;

▪改变用户对行、列、单元格的选择模式;

▪为单个的单元格、行和列提供工具提示(ToolTip)和快捷菜单。

▪自定义单元格、行和列的边框样式。

提供丰富的可扩展性的支持

DataGridView提供易于对网格进行扩展和自定义的基础结构,比如:

▪处理自定义的绘制事件可以为单元格、列和行提供自定义的观感;

▪继承一个内置的单元格类型以为其提供更多的行为;

▪实现自定义的接口以提供新的编辑体验。

 

2DataGridView的结构

DataGridView及其相关类被设计为用于显示和编辑表格数据式数据的灵活的、可扩展的体系。

这些类都位于system.Windows.Forms命名空间,它们的名称也都有共同的前缀"

DataGridView"

2.1结构元素(ArchitectureElements)

主要的DataGridView相关类继承自DataGridViewElement类。

DataGridViewElement类有两个属性,一是DataGridView,该属性提供了对其所属的DataGridView的引用;

二是State,该属性表示当前的状态,其值为DataGridViewElementStates枚举,该枚举支持位运算,这意味着可以设置组合状态。

2.2单元格和组(CellsandBands)

DataGridView由两种基本的对象组成:

单元格(cell)和组(band)。

所有的单元格都继承自DataGridViewCell基类。

两种类型的组(或称集合)DataGridViewColumn和DataGridViewRow都继承自DataGridViewBand基类,表示一组结合在一起的单元格。

DataGridView会与一些类进行互操作,但最常打交道的则是如下三个:

DataGridViewCell,DataGridViewColumn,DataGridViewRow。

2.3DataGridView的单元格(DataGridViewCell)

单元格(cell)是操作DataGridView的基本单位。

Displayiscenteredoncells,anddataentryisoftenperformedthroughcells。

可以通过DataGridViewRow类的Cells集合属性访问一行包含的单元格,通过DataGridView的SelectedCells集合属性访问当前选中的单元格,通过DataGridView的CurrentCell属性访问当前的单元格。

DataGridViewCell类图

Cell相关类和属性

DataGridViewCell是一个抽象基类,所有的单元格类型都继承于此。

DataGridViewCell及其继承类型并不是WindowsForms控件,但其中一些宿主于WindowsForms控件。

单元格支持的编辑功能通常都由其宿主控件来处理。

DataGridViewCell对象不会像WindowsForms控件那样控制自己的外观和绘制(painting)特征,相反的,DataGridView会负责其包含的单元格的外观。

通过DataGridView控件的属性和事件,你可以深刻地影响单元格的外观和行为。

如果你对单元格定制有特殊要求,超出了DataGridView提供的功能,可以继承DataGridViewCell或者它的某个子类来满足这些要求。

2.3.1DataGridViewCell的工作机制

理解DataGridView结构的一个重要部分是理解DataGridViewCell的工作机制:

单元格的值(ACell’sValue)

单元格的值是其根本所在。

如果单元格所在列不是绑定列,并且所在的DataGridView也不是VirtualMode,那么它的值就由它本身所持有并维护。

对于那些由绑定产生的单元格,它们压根儿就不“知道”该持有什么值,当然也就不会去维护了;

当DataGridView需要单元格的值的时候,它会到数据源中查询该单元格应当显示的值。

在VirtualMode下,除了会触发CellValueNeeded事件以获取相应单元格的值外,与数据绑定方式非常相似。

在单元格级,所有这些由DataGridViewCell.GetValue()方法来控制。

默认情况下,单元格的值的类型为object。

当一个列被绑定后,会设置它的ValueType属性,它包含的单元格的ValueType也随之更新。

而单元格的ValueType对于下一步的格式化非常重要。

格式化显示(FormattingforDisplay)

当DataGridView需要了解“如何显示这个单元格”时,它需要的是单元格的FormattedValue,而不是Value。

这是一个复杂的过程,因为格式化屏幕上的一些内容通常需要将它转换为字符串。

例如,尽管你将单元格的值(Value)设置为整型值155,在显示它的时候仍需要将其格式化。

单元格和其所在的列的FormattedValueType属性决定了显示它时所用的类型。

多数列使用字符串类型,而Image和CheckBox类型的单元格/列则使用其它类型。

Image类型的单元格和列使用Image作为默认的FormattedValueType,它的内置实现了解如何去显示一个Image。

CheckBox类型的单元格/列的FormattedValueType属性则取决于属性ThreeState的值。

在单元格级,所有这些由DataGridViewCell.GetFormattedValue()控制。

默认情况下,DataGridView使用TypeConverter将单元格的值(Value)转换为格式化的值(FormattedValue)。

DataGridView会基于单元格的ValueType和FormattedValueType属性来获取合时的TypeConverter。

对于一个单元格,FormattedValue会得到多次请求(即会在多个地方用到):

绘制单元格的时候,所在列根据单元格内容自动调整大小的时候,甚至是在判断鼠标是否经过单元格内容时。

每次需要FormattedValue的时候,DataGridView会触发CellFormatting事件,这时你就有机会修改单元格的格式化显示了。

如果单元格不能获取它的格式化值,它会触发DataError事件。

格式化显示单元格还包含以怎样的首选尺寸显示它。

这个首选尺寸是由单元格的FormattedValue,填充区域(padding),附加显示和边框合并而成。

绘制单元格的显示(PaintingtheDisplay)

在获得FormattedValue后,单元格将负责绘制它的内容。

单元格决定了绘制过程所使用的正确样式(参见本文档第五章的样式部分)并进行绘制。

记住:

如果单元格不去绘制自己,那么该单元格将不会有任何内容得到绘制(即单元格的绘制只由它自己负责),行、列不会负责绘制任何内容,因此要确保至少要绘制单元格的背景(background),否则单元格所在的矩形区域仍然是无效的(即未经绘制)。

解析单元格的显示(ParsingtheDisplay)

用户开始与单元格交互后,可能会编辑单元格的值。

有一件事要记住,用户编辑的实际上是单元格的FormattedValue。

用户提交所编辑的值时,FormattedValue需要转换回单元格的值(Value),这个过程称为解析(parsing)。

在单元格级上,所有这些工作由单元格的DataGridViewCell.ParseFormattedValue(introwIndex)方法控制。

默认情况下,会再次使用TypeConverter来将FormattedValue解析为单元格的真实值,这时会触发DataGridView的CellParsing事件,这时你就有机会修改单元格的解析方式了。

.

如果单元格不能得到正确地解析,会触发DataError事件。

2.3.2常见问题

1)如何使指定的单元格不可编辑?

2)如何让一个单元格不可用(disable)?

3)如何避免用户将焦点设置到指定的单元格?

4)如何使所有单元格总是显示控件(不论它们是否处于编辑状态)?

5)Whydoesthecelltextshowupwith“square”characterswheretheyshouldbenewlines?

6)如何在单元格内同时显示图标和文本?

2.4DataGridView的列(DataGridViewColumn)

DataGridView所附带的数据(这些数据可以通过绑定或非绑定方式附加到控件)的结构表现为DataGridView的列。

你可以使用DataGridView的Columns集合属性访问DataGridView所包含的列,使用SelectedColumns集合属性访问当前选中的列。

DataGridViewColumn类图

Column相关类和属性

一些主要的单元格类型拥有相应的列类型,这些列类型继承自DataGridViewColumn基类。

常见问题:

1)如何隐藏一列?

2)如何避免用户对列排序?

3)如何针对多个列排序?

2.5DataGridView的编辑控件(EditingControls)

支持高级编辑功能的单元格一般都使用一个继承自WindowsForms控件的宿主控件,这些控件同时也实现了IDataGridViewEditingControl接口。

DataGridViewEditingControlClassdiagram

ClassesthatimplementEditingControls

下表说明了单元格类型、列类型、编辑控件间的关系:

单元格类型

宿主控件

列类型

DataGridViewButtonCell

n/a

DataGridViewButtonColumn

DataGridViewCheckBoxCell

DataGridViewCheckBoxColumn

DataGridViewComboBoxCell

DataGridViewComboBoxEditingControl

DataGridViewComboBoxColumn

DataGridViewImageCell

DataGridViewImageColumn

DataGridViewLinkCell

DataGridViewLinkColumn

DataGr

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2