Cellvalidating change value is vanessa carlton dating anyone

Posted by / 23-Feb-2018 13:17

Cellvalidating change value

All Cells); // 让 Data Grid View1 的第一列的列宽自动调整一下。 Data Grid View1. Auto Size Rows Mode = Data Grid View Auto Size Rows Mode. 个三维边框。 Inset Double单行边框。 无无边框。 Not Set边界是没有设置 一开始就是单行凸起边框 Outset Double一个双线凸起边框 Outset Partial单行边界包含凸起部分 单单行边界 5.8输入,编辑模式 默认情况下,用户可以通过在编辑,或按F2键当前Data Grid View的文本框格的内容。这使得在编辑模式下,如果下列条件全部得到满足手机: ? 哪些绑定列的显示方式,和一般的数据源本身处理,如排序操作。 5.12.2补充绑定模式 您可以通过显示补充随着绑定列绑定列绑定模式。这有时也被称为“混合模式”,是用来显示像计算值或用户界面(UI)控制的东西有用。 由于未绑定列之外的数据源,他们是忽视了数据源的排序操作。因此,当您在混合模式下启用排序,你必须管理一个本地缓存中绑定数据,并实现虚拟模式,让Data Grid View控件交互。 5.12.3常见问题及案例 1)如何显示绑定的数据绑定以及数据? 2)我怎样的数据显示,从两个表来? 5.12.4更换绑定模式 如果绑定模式无法满足您的性能需求,您可以通过虚拟管理模式的自定义事件处理程序缓存中的所有数据。例如,你可以使用虚拟模式来实现一个公正的实时数据加载的机制,只是从一个网络数据库,获得最佳性能所必需的数据检索。这种情况是非常有用的大量时,通过速度较慢的网络连接或与客户机的数据有一个内存或存储空间有限的工作。 5.12.5虚拟模式事件 如果您的数据是只读的,Cell Value Needed事件可能是唯一的事件,你将需要处理。额外的虚拟模式事件让你启用特定的功能,如用户编辑,添加和删除行和行级的交易。 一些标准的Data Grid View事件(如发生的事件当用户添加或删除行,或在编辑单元格值时,解析,验证,或者格式化)在虚拟模式中非常有用,以及。你也可以处理事件,让你保持在一个通常不绑定的数据源中存储的值,如细胞提示文本,单元格和行的错误文本,单元格和行的快捷菜单数据,和行高的数据。 下列事件发生时,才Virtual Mode属性设置为true。 事件描述 Cell Value Needed由控制用于检索从显示数据高速缓存单元格的值。此事件只发生在未绑定列细胞。 Cell Value Pushed由控制用于提交,可以向用户输入的数据高速缓存单元。此事件只发生在未绑定列细胞。 调用方法时Update Cell Value更改之外的Cell Value Pushed事件处理缓存值,以确保当前值显示在控件中的作用,并适用于目前所有自动调整大小模式。 New Row Needed由控件用来指示一个数据高速缓存中的新行的需要。 Row Dirty State Needed的控制,用来确定行是否有任何未提交的更改。 Cancel Row Edit使用的控制,表明该行应恢复其缓存的值。 以下事件在虚拟模式中非常有用,但也可以使用了Virtual Mode属性设置无关。 事件的说明 User Deleting Row User Deleted Row Rows Removed Rows Added由控件用来指示行被删除或添加,让您更新相应的数据高速缓存。 Cell Formatting Cell Parsing Cell Validating Cell Validated Row Validating Row Validated使用的显示格式为单元格值和解析和验证用户输入控制。 Cell Tool Tip Text Needed由控制单元用于检索工具提示文本当Data Source属性设置或Virtual Mode属性为true。 工具提示显示细胞只有在Show Cell Tool Tips属性值为true。 Cell Error Text Needed Row Error Text Needed的控制,用来检索单元格或行的错误文本当Data Source属性设置或Virtual Mode属性为true。 调用方法或Update Row Error Text Update Cell Error Text方法,当你更改单元格或行的错误文本,以确保当前值在控件中显示。 细胞与行的错误标志符号时显示Show Cell Errors和Show Row Errors属性值是正确的。 Cell Context Menu Strip Needed Row Context Menu Strip Needed由控制用于检索单元格或行的Context Menu Strip当控件的Data Source属性设置或Virtual Mode属性为true。 Row Height Info Needed Row Height Info Pushed由控制用于检索或存储数据的高速缓存行中高度信息。调用方法时改变Update Row Height Info缓存行之外的Row Height Info Pushed事件处理的高度信息,以确保当前值在控制显示器使用。 5.12.6在虚拟模式下的最佳实践 如果要实现虚拟模式,以工作效率的大量数据,你也想确保您正在使用Data Grid View控件本身的效率。请参阅下面的最佳做法的信息 5.13容量(容量) 一般来说,在Data Grid View没有硬编码容量限制。网格的设计,使越来越多的内容可以添加的机器变得更快,并有更多的内存。尽管如此,格并不是用来处理大量列。如果您添加超过300行,您会开始注意到在随着我们对电网的表现却不是这样的优化性能的退化。如果你需要一个大量的列格,然后在Data Grid View可能不符合您的需求。关于支持的行数时,Data Grid View是受内存限制。当使用虚拟模式,您可以轻松支持超过200万行。看看你可以做的事情(不要做),以提高内存的使用情况和性能的最佳做法的信息,下面一节。 6个最佳实践(最佳做法) Data Grid View控件的设计提供最大的可扩展性。如果你需要显示大量数据,你应该按照本主题中所述,以避免内存或有辱人格的用户界面(UI)的响应消耗大量的指导方针。 6.1使用高效单元格样式 每个单元格,行和列可以有自己的样式信息。样式信息存储在Data Grid View Cell Style对象。创造许多个人Data Grid View元素单元格样式的对象可以是低效的,特别是当大量数据的工作。为了避免性能的影响,请遵循下列准则: ? Style财产。访问Style属性创建一个Data Grid View Cell Style类的新实例如果该属性还没有被使用。此外,这个对象可能不包含完整的样式为单元格的信息,如果有些样式从行,列或控件继承。欲了解更多有关单元格样式继承的详细信息,请参阅细胞在Windows窗体Data Grid View控件样式。 6.2使用高效快捷菜单 每个单元格,行和列可以有它自己的快捷菜单。在Data Grid View控制快捷菜单Context Menu Strip控件代表。这正好与单元格样式对象作为,创造许多个人Data Grid View元素的快捷菜单将产生负面影响性能。为了避免这种损失,请使用下列准则: ? 请确定指定的行或列时,可以共享调用Add(的Data Grid View Row)Add方法的重载,Add Range方法,插入(Int32的,的Data Grid View Row)方法重载的插入,和Rows集合Insert Range方法。 要确定行是否是共享的,使用Data Grid View Row Collection. On Collection Changed(Collection Change Event Args)或On Row State Changed(智力,Data Grid View Row State Changed Event Args)方法,提高了这些事件。 ? 如何避免用户将焦点设置到指定的单元格? 默认情况下Data Grid View的操作(navigation)模型在限制用户将焦点置于指定的单元格方面没有提供任何支持。你可以实现自己的操作逻辑,这需要重写合适的键盘、导航、鼠标方法,如Data Grid View. 如何避免用户对列排序? 对于Data Grid View 控件,默认情况下,Text Box类型的列会自动排序,而其它类型的列则不会自动排序。这种自动排序有时会把数据变得比较乱,这时你会想更改这些默认设置。 Data Grid View Column的属性Sort Mode决定了列的排序方式,将其设置为Data Grid View Column Sort Mode. Auto Resize Column(0, Data Grid View Auto Size Column Mode. Auto Resize Columns() b,临时的,让行高自动调整 // 让 Data Grid View1 的所有行高自动调整一下。 Data Grid View1. Fill Weight = 30; //第三列的相对宽度为30% 这里的值是相对于Data Grid View当前的总宽度的,所以窗体最大化和缩小的效果是不一样的,但比例不变 注:如何给每列设置标头 设置标题字段(先把Columns Headers Visible设置为true) Grid View. All Cells; ---------- 在winform中,使用Data Grid View时,想在某一列,值为“true”时,将这列颜色改变,并且将值也改变,需要用到如下方法: private void gdv Data_Cell Formatting(object sender, Data Grid View Cell Formatting Event Args e) ---------- Data Grid View控件 Data Grid View是用于Windows Froms 2.0的新网格控件。它可以取代先前版本中Data Grid控件,它易于使用并高度可定制,支持很多我们的用户需要的特性。 1 何为Data Grid View 通过Data Grid View控件,可以显示和编辑表格式的数据,而这些数据可以取自多种不同类型的数据源。 Data Grid View控件具有很高的的可配置性和可扩展性,提供了大量的属性、方法和事件,可以用来对该控件的外观和行为进行自定义。当你需要在Win Form应用程序中显示表格式数据时,可以优先考虑Data Grid View(相比于Data Grid等其它控件)。如果你要在小型网格中显示只读数据,或者允许用户编辑数以百万计的记录,Data Grid View将为你提供一个易于编程和良好性能的解决方案。 Data Grid View 用来替换先前版本中的Data Grid,拥有较Data Grid更多的功能;但Data Grid仍然得到保留,以备向后兼容和将来使用。如果你要在两者中选择,可以参考下面给出的Data Grid 和Data Grid View之间区别的细节信息。 1.1 Data Grid View和Data Grid 之间的区别 Data Grid View提供了大量的Data Grid所不具备的基本功能和高级功能。此外,Data Grid View 的结构使得它较之Data Grid控件更容易扩展和自定义。 下表描述了Data Grid View提供而Data Grid未提供的几个主要功能。 Data Grid View功能 描述 多种列类型 与Data Grid相比,Data Grid View 提供了更多的内置列类型。这些列类型能够满足大部分常见需要,而且比Data Grid中的列类型易于扩展或替换。 多种数据显示方式 Data Grid仅限于显示外部数据源的数据。而Data Grid View则能够显示非绑定的数据,绑定的数据源,或者同时显示绑定和非绑定的数据。你也可以在Data Grid View中实现virtual mode,实现自定义的数据管理。 用于自定义数据显示的多种方式 Data Grid View提供了很多属性和事件,用于数据的格式化和显示。比如,你可以根据单元格、行和列的内容改变其外观,或者使用一种类型的数据替代另一种类型的数据。 用于更改单元格、行、列、表头外观和行为的多个选项 Data Grid View使你能够以多种方式操作单个网格组件。比如,你可以冻结行和列,避免它们因滚动而不可见;隐藏行、列、表头;改变行、列、表头尺寸的调整方式;为单个的单元格、行和列提供工具提示(Tool Tip)和快捷菜单。 唯一的一个Data Grid提供而Data Grid View未提供的特性是两个相关表中数据的分层次显示(比如常见的主从表显示)。你必须使用两个Data Grid View来显示具有主从关系的两个表的数据。 1.2 Data Grid View的亮点 下表着重显示了Data Grid View的主要特性,稍后会介绍它们的详细信息。 Data Grid View控件特性 描述 多种列类型 Data Grid View提供有Text Box、Check Box、Image、Button、Combo Box和Link类型的列及相应的单元格类型。 多种数据显示方式 Data Grid仅限于显示外部数据源的数据。而Data Grid View则能够显示非绑定的数据,绑定的数据源,或者同时显示绑定和非绑定的数据。你也可以在Data Grid View中实现virtual mode,实现自定义的数据管理。 自定义数据的显示和操作的多种方式 Data Grid View提供了很多属性和事件,用于数据的格式化和显示。 此外,Data Grid View提供了操作数据的多种方式,比如,你可以: 对数据排序,并显示相应的排序符号(带方向的箭头表示升降序) 对行、列和单元格的多种选择模式;多项选择和单项选择 以多种格式将数据拷贝到剪贴板,包括text,CSV (以逗号隔开的值) 和 HTML 改变用户编辑单元格内容的方式 用于更改单元格、行、列、表头外观和行为的多个选项 Data Grid View使你能够以多种方式操作单个网格组件。比如,你可以: 冻结行和列,避免它们因滚动而不可见; 隐藏行、列、表头; 改变行、列、表头尺寸的调整方式; 改变用户对行、列、单元格的选择模式; 为单个的单元格、行和列提供工具提示(Tool Tip)和快捷菜单。 自定义单元格、行和列的边框样式。 提供丰富的可扩展性的支持 Data Grid View提供易于对网格进行扩展和自定义的基础结构,比如: 处理自定义的绘制事件可以为单元格、列和行提供自定义的观感; 继承一个内置的单元格类型以为其提供更多的行为; 实现自定义的接口以提供新的编辑体验。 2 Data Grid View的结构 Data Grid View及其相关类被设计为用于显示和编辑表格数据式数据的灵活的、可扩展的体系。这些类都位于system. Forms命名空间,它们的名称也都有共同的前缀"Data Grid View"。 2.1 结构元素(Architecture Elements) 主要的Data Grid View相关类继承自Data Grid View Element类。 Data Grid View Element类有两个属性,一是Data Grid View,该属性提供了对其所属的Data Grid View的引用;二是State,该属性表示当前的状态,其值为Data Grid View Element States枚举,该枚举支持位运算,这意味着可以设置组合状态。 2.2 单元格和组(Cells and Bands) Data Grid View由两种基本的对象组成:单元格(cell)和组(band)。所有的单元格都继承自Data Grid View Cell基类。 两种类型的组(或称集合)Data Grid View Column和Data Grid View Row都继承自Data Grid View Band 基类,表示一组结合在一起的单元格。 Data Grid View会与一些类进行互操作,但最常打交道的则是如下三个:Data Grid View Cell, Data Grid View Column,Data Grid View Row。 2.3 Data Grid View的单元格 (Data Grid View Cell) 单元格(cell)是操作Data Grid View的基本单位。Display is centered on cells, and data entry is often performed through cells。可以通过Data Grid View Row 类的Cells 集合属性访问一行包含的单元格,通过Data Grid View的Selected Cells集合属性访问当前选中的单元格,通过Data Grid View的Current Cell属性访问当前的单元格。 Data Grid View Cell 类图 Cell 相关类和属性 Data Grid View Cell是一个抽象基类,所有的单元格类型都继承于此。Data Grid View Cell及其继承类型并不是Windows Forms控件,但其中一些宿主于Windows Forms控件。单元格支持的编辑功能通常都由其宿主控件来处理。 Data Grid View Cell对象不会像Windows Forms控件那样控制自己的外观和绘制(painting)特征,相反的,Data Grid View会负责其包含的单元格的外观。通过Data Grid View 控件的属性和事件,你可以深刻地影响单元格的外观和行为。如果你对单元格定制有特殊要求,超出了Data Grid View提供的功能,可以继承Data Grid View Cell或者它的某个子类来满足这些要求。 2.3.1 Data Grid View Cell的工作机制 理解Data Grid View结构的一个重要部分是理解Data Grid View Cell的工作机制: 单元格的值(A Cell’s Value) 单元格的值是其根本所在。如果单元格所在列不是绑定列,并且所在的Data Grid View也不是Virtual Mode,那么它的值就由它本身所持有并维护。对于那些由绑定产生的单元格,它们压根儿就不“知道”该持有什么值,当然也就不会去维护了;当Data Grid View需要单元格的值的时候,它会到数据源中查询该单元格应当显示的值。在Virtual Mode下,除了会触发Cell Value Needed事件以获取相应单元格的值外,与数据绑定方式非常相似。在单元格级,所有这些由Data Grid View Cell. 避免为单个Data Grid View Cell或Data Grid View Row对象的单元格样式属性。这包括由Row Template行对象属性中指定。每个新行是从行模板克隆将接收其模板的单元格样式对象的副本。为了获得最大的可扩展性,设置在Data Grid View的单元格样式属性的水平。例如,设置Default Cell Style属性,而不是Data Grid View Cell. 如果某些细胞需要的格式以外的默认格式,在使用相同的单元格,行或列组的Data Grid View Cell Style实例。避免直接设置个别类型的单元格,行和列Data Grid View Cell Style属性。对于一个单元格样式共享的例子,请参见如何:设置单元格样式的默认为Windows窗体Data Grid View控件。您也可避免性能下降时,通过处理Cell Formatting设置事件处理个别单元格样式。有关示例,请参见如何:自定义的数据格式在Windows窗体Data Grid View控件。 ? 避免为单个单元格和行的快捷菜单。这包括行模板,这是克隆了它的快捷方式菜单时,新行被添加到控件一起。为了获得最大的可扩展性,仅使用控件的Context Menu Strip属性来指定整个控制单一的快捷菜单。 ? 如果您需要多个行或多种细胞的快捷菜单,处理Cell Context Menu Strip Needed或Row Context Menu Strip Needed事件。这些事件让您管理自己的快捷菜单对象,让您调整性能。 6.3使用自动调整大小高效 行,列和标题可以自动调整大小的单元格内容的变化,使细胞中的全部内容都没有剪辑显示。更改调整大小模式也可以调整行,列和标题。要确定正确的大小,Data Grid View控件必须检查每一个细胞,它必须适应值。当处理大量数据时,这种分析可以产生负面影响控制性能的自动调整大小时发生。为了避免性能下降,请遵循下列准则: ? de,Data Grid View Auto Size Columns Mode和Data Grid View Auto Size Column Mode枚举的Displayed Cells或Displayed Cells Except Headers领域。 ? Shared Row(int)方法来检索行对象,然后检查对象的Index属性。共享行总是为-1 Index属性值。 6.6防止行成为非共享 共享成为非共享行可以作为一个代码或用户操作的结果。为了避免影响性能,你应该避免造成行成为非共享。在应用开发,你可以处理Row Unshared事件来确定行成为非共享。这是非常有用的调试行共享问题。 为了防止行成为非共享,请使用下列准则: ? Shared Row(int)方法并传入行的实际索引。请注意,但是,修改一个共享行对象通过此方法检索将修改所有行共享此对象。在新记录行不共享,所以这是不会受到影响,当您修改任何其他行中的其他行。还要注意的是一个共享行代表不同的行可能有不同的快捷菜单。以检索共享行实例的正确快捷菜单中,使用Get Context Menu Strip方法并传入行的实际索引。如果您访问共享行的Context Menu Strip属性,而是将使用-1共享行的索引,将不检索正确的快捷菜单。 ? Cells集合。访问一个细胞将直接导致其父行成为非共享,实例化一个新的Data Grid View Row。为细胞相关的事件处理程序接收单元属性,你可以用它来操作不会导致行成为非共享细胞事件参数对象。您也可以使用Current Cell Address属性来检索,而不用访问细胞直接当前单元格的行和列索引。 ? 不访问Selected Cells集合时Selection Mode属性值是Full Column Select,Column Header Select,Full Row Select或Row Header Select。这会导致所有行成为非共享选择。 ? Auto Resize Row Headers Width( Data Grid View Row Headers Width Size Mode. Context Menu Strip3; // 单元格的 Context Menu Strip 设定 Data Grid View1[0, 0]. Context Menu Strip4; 对于单元格上的右键菜单的设定,优先顺序是: Cell Data Grid View Cell Context Menu Strip Needed、Row Context Menu Strip Needed 事件 利用 Cell Context Menu Strip Needed 事件可以设定单元格的右键菜单,尤其但需要右键菜单根据单元格值的变化而变化的时候。比起使用循环遍历,使用该事件来设定右键菜单的效率更高。但是,在Data Grid View使用了Data Source绑定而且是Virtual Mode的时候,该事件将不被引发。 // Cell Context Menu Strip Needed事件处理方法 private void Data Grid View1_Cell Context Menu Strip Needed(object sender, Data Grid View Cell Context Menu Strip Needed Event Args e) 同样,可以通过 Row Context Menu Strip Needed 事件来设定行的右键菜单。 // Row Context Menu Strip Needed事件处理方法 private void Data Grid View1_Row Context Menu Strip Needed(object sender, Data Grid View Row Context Menu Strip Needed Event Args e) Cell Context Menu Strip Needed 事件处理方法的参数中、「e. Row Index=-1」表示列头。Row Context Menu Strip Needed则不存在「e. Row Index=-1」的情况。 四、针对触发事件的一些介绍 我认为只要记住常用的即可,比如鼠标的操作,一些常见的点击触发事件;比如_Cell Parsing()一般在编辑状态结束的时候发生。 其他的用到的时候算查即可,时间长了掌握的也就多了。 ----------- ((Data Grid View Combo Box Cell)dgv Student List. Auto Size Columns Mode 属性继承。 None 列宽不会自动调整。 All Cells 调整列宽,以适合该列中的所有单元格的内容,包括标题单元格。 All Cells Except Header 调整列宽,以适合该列中的所有单元格的内容,不包括标题单元格。 Displayed Cells 调整列宽,以适合当前屏幕上显示的行的列中的所有单元格的内容,包括标题单元格。 Displayed Cells Except Header 调整列宽,以适合当前屏幕上显示的行的列中的所有单元格的内容,不包括标题单元格。 Column Header 调整列宽,以适合列标题单元格的内容。 Fill 调整列宽,使所有列的宽度正好填充控件的显示区域,只需要水平滚动保证列宽在Data Grid View Column. Fill Weight属性值决定。 另外介绍: Data Grid View 有一个属性是Auto Size Column Mode,他有几个枚举值: 1、All Cells 调整列宽,以适合该列中的所有单元格的内容,包括标题单元格。 2、All Cells Except Header 调整列宽,以适合该列中的所有单元格的内容,不包括标题单元格。 3、Column Header 调整列宽,以适合列标题单元格的内容。 4、Displayed Cells 调整列宽,以适合当前屏幕上显示的行的列中的所有单元格的内容,包括标题单元格。 5、Displayed Cells Except Header 调整列宽,以适合当前屏幕上显示的行的列中的所有单元格的内容,不包括标题单元格。 6、Fill 调整列宽,使所有列的宽度正好填充控件的显示区域,只需要水平滚动保证列宽在Data Grid View Column. Fill Weight 属性值决定。 7、None 列宽不会 自动调整。 8、Not Set 列的大小调整行为从 Data Grid View. NET中Image类支持的各种格式,还有Access数据库及Northwind范例数据库使用的OLE图片格式。 如果你想提供Data Grid View Button Column列的功能,又希望显示自定义的外观,手动生成Image列会很有用。在显示后,你可以处理Cell Click事件以处理用户对单元格的点击(模拟按钮列)。 如果你要为计算值或非图片的值提供图片显示,在Cell Formatting事件处理函数中动态生成Image列的方法会很有用。比如,你有一个表示风险值的列,它的值可能是”high”、”middle”或”low”,可以为它们显示不同的图标作为警示;或者你有一个名为”Image”的列,它的值时图片文件的位置而不是真实的图片内容,也可以用这种方法。 3.4 Data Grid View Button Column 使用Data Grid View Button Column 列,可以在单元格内显示按钮。如果你要为用户操作特定行提供一种简单的方式,Button列会很有用,比如排序或在另一个窗体中显示子表记录。 在对Data Grid View进行数据绑定时不会自动生成Button列,所以你必须手动创建它们,然后把它们添加到Data Grid View控件的Columns集合中。 你可以处理Cell Click事件以响应用户的点击动作。 3.5 Data Grid View Combo Box Column 在Data Grid View Combo Box Column类型的列中,你可以显示包含下拉列表的单元格。这在仅允许用户输入一些特定值的时候显得很有用,比如在SQL Server示例数据库Northwind中Products表的Category列,它表示产品的种类,这个应只允许选择现有的产品种类,此时就可以使用Combo Box列。 如果你了解如何为Combo Box控件生成下拉列表,就可以用相同的方式为Combo Box列中的所有单元格生成下拉列表。要么通过列的Items集合手动添加,要么通过Data Source,Display Member 和Value Member属性绑定到一个数据源。要了解其中的更多信息,可以参考Win Forms中Combo Box空间的用法。 你可以将Combo Box列的单元格的实际值绑定到Data Grid View控件本身的数据源(注意不是Combo Box列的数据源),这需要设置该列的Data Property Name属性(设置某个列的名称)。 Combo Box列不会在数据绑定时自动生成,所以你必须手动创建它们,然后将其添加到Columns集合属性中。另外,你也可以使用设计器,在设计时设置相应的属性,这个过程类似于在设计器中Combo Box控件的使用。 3.5.1 Data Error事件和Combo Box列 在使用Data Grid View Combo Box Column 时,有时会修改单元格的值或启动Combo Box控件的Items集合,这样可能会引发Data Error事件。这是Combo Box列的设计使然,Combo Box列的单元格会进行数据验证。在Combo Box列的单元格尝试绘制包含的内容时,它需要将包含的值进行格式化(见第二章第三节),在此转换过程中,它会在Combo Box的Items集合中查找对应的值,如果查找失败,就会引发Data Error事件。忽略了Data Error事件可能会使单元格不能进行正确的格式化。 3.6 Data Grid View Link Column 使用Data Grid View Link Column列,你可以显示一列包含超链接的单元格。在显示数据源中的URL值,或者替代按钮列进行一些特殊行为,如打开另一个子记录窗体时会很有用。 Link列也不会在Data Grid View数据绑定时自动生成。要使用它,你还得手动创建,然后将它添加到Data Grid View控件的Columns集合中。 你可以处理Cell Content Click事件来相应用户的点击动作。这个事件不同于Cell Click 和Cell Mouse Click 事件,后两者在用户点击单元格任何位置(而不仅仅时链接)时都会触发。 Data Grid View Link Column 类提供了几个属性,用来修改链接的外观,包括点击前,点击时和点击后(类似于网页中的超链接)。 4 操作数据(Working with Data) 多数情况下,使用Data Grid View的时候都需要跟数据打交道,这时有很多事情可能需要你去做。你需要验证用户输入的数据,或者需要对数据进行格式化。Data Grid View能够以三种模式显示数据:bound、unboundand 和virtual。每种模式都有自己的特性和存在的理由。不管是否是数据绑定模式,在操作数据时,如果发生错误,Data Grid View通常会触发Data Error事件,理解该事件发生的原因能让你更好地利用它。 4.1 数据输入和验证的相关事件 用户输入数据时-对其所在的行或单元格,你可能希望验证这些数据,在遇到无效数据时通知用户。就像常见的Windows Forms控件,Data Grid View的行和单元格也有Validating和Validated事件,验证事件可被取消。用户在单元格/行间移动时会触发Enter和Leave事件。最后,用户在开始编辑单元格时也会触发事件。了解所有这些程序的发生顺序会对你很有帮助。 4.1.1 数据验证相关事件的顺序 下面列出validation,enter/leave和begin/end这些事件的顺序(当Edit Mode为Edit On Enter时): 当从一个单元格移动至另一单元格(在同一行内): 1) Cell Leave (原来的单元格) 2) Cell Validating/ed (原来的单元格) 3) Cell End Edit (原来的单元格) 4) Cell Enter (新的单元格) 5) Cell Begin Edit (新的单元格) 当从一行移动到另一行: 1) Cell Leave (原来的单元格),Row leave (原来的行) 2) Cell Validating/ed (原来的单元格) 3) Cell End Edit (原来的单元格) 4) Row Validating/ed (原来的行) 5) Row Enter (新的行) 6) Cell Enter (新的单元格) 7) Cell Begin Edit (新的单元格) 4.1.2 验证数据 验证用户输入时,如果Data Grid View采用非数据绑定模式,通常会对单元格进行验证;而如果采用数据绑定模式,则一般会对行进行验证。这与数据的组织方式密切相关,非数据绑定模式下,一行的单元格间关系一般比较“散”,而绑定模式下,数据源的数据一般以行来组织。但有时在数据绑定模式下会同时进行单元格级和行级的验证。 4.1.2.1 显示错误信息 一旦遭遇了无效的输入数据,你通常需要通知用户。这时有多种方式可以选择,传统的方式是使用信息对话框。Data Grid View还能够为行或单元格显示一个错误图标来通知用户输入了无效数据。错误图标带有一个工具提示,它提供了该错误的相关信息: 4.1.3 在新行中的数据输入(Data Entry in the New Row) 当在程序中使用Data Grid View来编辑数据时,你往往希望提供让用户添加新行数据的功能。Data Grid View控件支持这个功能,提供了一个用于添加新记录的行,而这一行总是显示为最后一行,并在该行的标题单元格标以星号(*)。 下面的几个小节会讨论一些在程序中使用这个新行时需要考虑的内容。(下面总是以 新行 表示 用于添加新记录的行 ) 4.1.3.1 显示新行 使用Allow User To Add Rows属性以指示是否显示新行,其默认值为true。 新行处于网格的最后一行,标题带有星号: 在数据绑定的情况下,当Data Grid View控件的Allow User To Add Rows属性和数据源的IBinding List. Count - 1]; 尽管新行也包含在Rows集合中,它与Rows集合中其它行的行为却不相同,表现在两点: 不能以编程的方式将新行从Rows集合中移除,如果你尝试这么做,会抛出Invalid Operation Exception类型的异常。用户也不能删除新行。Data Grid View Row Collection. Auto Size To All Headers); 关于性能: 通过 Auto Size Columns Mode 或者 Auto Size Rows Mode 属性所指定的单元格进行自动调整时,如果调整次数过于多那么将可能导致性能下降,尤其是在行和列数比较多的情况下。在这时用 Displayed Cells 代替 All Cells 能减少非所见的单元格的调整,从而提高性能。 Data Grid View 冻结列或行 1) 列冻结 Data Grid View Column. Allow User To Order Columns = True 时,固定列不能移动到非固定列, 反之亦然。 2) 行冻结 Data Grid View Row. Edit Programmatically; 根据条件设定单元格的不可编辑状态 当一个一个的通过单元格坐标设定单元格 Read Only 属性的方法太麻烦的时候,你可以通过 Cell Begin Edit 事件来取消单元格的编辑。 Cell Begin Edit 事件处理方法 private void Data Grid View1_Cell Begin Edit(object sender, Data Grid View Cell Cancel Event Args e) Data Grid View 剪切板的操作 Data Grid View. Context Menu Strip2; // 行的 Context Menu Strip 设定 Data Grid View1. Auto Size Columns Mode 属性继承。 注:如果想要自动设置列宽.在这里就必须把Data Grid View的值设置为Fill Grid View. Allow New 属性都为true时,新行才会显示,只要两者有一个为false,新行就不会显示。 4.1.3.2 为生成的新行添加默认值 当用户选择新行作为当前行,Data Grid View会触发Default Values Needed事件。在该事件中可以访问新行,并为其生成默认值,为用户输入提供方便。 下面这段代码演示了如何在Default Values Needed事件中为新行指定默认值。 private void data Grid View1_Default Values Needed(object sender, Data Grid View Row Event Args e) 4.1.3.3 Rows集合与新行的关系 新行包含在Data Grid View控件的Rows集合中,又因其总是处于最后一行,下面这行代码会返回新行: Data Grid View Row row = data Grid View1. Clear()方法也不能将新行从Rows集合中移除。 不能在新行之后添加行。如果你尝试这么做,会抛出Invalid Operation Exception 类型的异常。这种特性的结果是,新行总处于Data Grid View的最后一行。当新行显示的时候,Data Grid View Row Collection 类中用于添加行的方法-Add,Add Copy以及Add Copies-在内部都调用用于插入的方法。 4.1.3.4 在新行中输入数据 用户开始在新行输入数据之前,新行的Is New Row属性值为true;一旦用户开始输入,这一行就不再是新行了,Data Grid View中会产生一个“新”的新行,看下面示意图: 在添加“新”的新行时,会触发User Added Row事件,它的事件处理函数的第二个参数有属性Row,指定了这个“新”的新行。如果用户此时按下Escape键,“新”的新行会被移除,这会触发User Deleting Row事件,它的事件处理函数的第二个参数的属性Row指定了“新”的新行。 4.1.3.5 自定义新行的可视化效果 新行是基于Row Template模板创建的,如果没有指定它的单元格的样式,它们会采用继承的样式。要了解样式继承的更多信息,请参看第五章第一节的内容。 新行中单元格的初始值是由每个单元格的Default New Row Value属性决定的。对于Data Grid View Image Cell类型的单元格,其初始值为一个占位图片,其它类型的则为null。你可以重写这个属性以返回自定义值。但也可以在Default Values Needed事件处理函数中对默认值进行替换,该事件在焦点进入新行时触发。 新行标题的标准图标是箭头或者星号,并没有得到暴露。如果你要自定义这个图标,就需要创建一个自定义的Data Grid View Row Header Cell 类。 新行的标题的标准图标使用标题单元格Data Grid View Cell Style的Fore Color属性。注意:如果没有足够的空间,图标就不会再显示。 如果为标题单元格设置了字符串值(通过Value属性),但没有足够的控件同时显示文本和图标,那么图标会被首先截掉。 4.1.3.6 新行的排序 在非绑定模式下,新行总是添加在Data Grid View的最后一行,即使已经对数据排序。用户需要在添加新行后再次进行排序,以将新记录放在合适的位置;这种行为方式类似于List View控件。 在绑定模式或虚拟模式(Virtual Mode)下,如果已对数据排序,那么插入数据时的行为取决于数据模型的实现方式。对于ADO. Auto Size Columns Mode = Data Grid View Auto Size Columns Mode. ntal Scroll Bar和Vertical Scroll Bar属性显示。 Scroll Bar控件直接访问这些让你拥有滚动更好的控制。 5.5.3滚动属性 有许多的属性,提供更大的详细程度如何设?? Enable Resizing; Data Grid View 列宽和行高自动调整的设定: // 设定包括Header和所有单元格的列宽自动调整 Data Grid View1. Selected。 5.5滚动(滚动) Data Grid View中毫无疑问地会提供对水平和垂直滚动条的支持,它同时也支持使用鼠标滚轮进行垂直滚动。水平方向的滚动基于像素值,而垂直方向的滚动则基于行的索引,不支持垂直的Data Grid View方向的基于像素值的滚动。 5.5.1 Scroll事件 当你滚动Data Grid View的引发Scroll事件,让您被通知滚动发生。对滚动事件参数定位属性可以让你知道滚动的方向。 5.5.2滚动条 Data Grid View的滚动条可以访问,它通过保护Horizo??

Data Source Null Value属性要被命名为Parse Null Value的,如果Null Value属性被命名为Formatted Null Value的话,但最后还是采用了Data Source Null Value,这样更直观准确。在将null值写入单元格的值时,就会用到Data Source Null Value属性。在数据绑定情形下,这个null值将被写入数据库或业务对象,此处需要进行控制,因为对于数据库和业务对象来说,null的概念不尽相同。通常你会期望,使用业务对象时将Data Source Null Value 设置为null,而使用数据库时则将其设置为DBNull Value。Data Source Null Value的默认值为DBNull. Row Pre Paint事件,并让自己的单个细胞涂料前景的内容。在Row Pre Paint事件你可以设置Paint Parts事件参数属性来轻松定制的细胞如何油漆。例如,如果您想保留的任何选择,或从绘画的焦点细胞,你Row Pre Paint事件将设置像这样Paint Parts属性: e. 如果希望,Data Grid View 内所有单元格都不可编辑, 那么只要: // 设置 Data Grid View1 为只读 Data Grid View1. Value = "第一行"; // 改变Data Grid View1的左上头部单元内容 Data Grid View1. Value = "左上"; 另外你也可以通过 Header Text 来改变他们的内容。 // 改变Data Grid View1的第一列列头内容 Data Grid View1. Header Text = "第一列"; Data Grid View 单元格的Tool Tip的设置 Data Grid View. Current Cell Address 属性(而不是直接访问单元格)来确定单元格所在的行: Data Grid View. * 注意: Grid View 的索引器的参数是: column Index, row Index 或是 column Name, row Index 这与习惯不同。 ********Data Grid View 设定单元格只读: 1) 使用 Read Only 属性 ? Frozen 属性为 True 时, 该列左侧的所有列被固定, 横向滚动时固定列不随滚动条滚动而左右移动。这对于重要列固定显示很有用。 // Data Grid View1的左侧2列固定 Data Grid View1. Frozen 属性为 True 时, 该行上面的所有行被固定, 纵向滚动时固定行不随滚动条滚动而上下移动。 // Data Grid View1 的上3行固定 Data Grid View1. Frozen = true; Data Grid View 列顺序的调整 设定 Data Grid View 的 Allow User To Order Columns 为 True 的时候, 用户可以自由调整列的顺序。 当用户改变列的顺序的时候,其本身的 Index 不会改变,但是 Display Index 改变了。你也可以通过程序改变 Display Index 来改变列的顺序。 列顺序发生改变时会引发 Column Display Index Changed 事件: // Data Grid View1的Column Display Index Changed事件处理方法 private void Data Grid View1_Column Display Index Changed(object sender, Data Grid View Column Event Args e) Data Grid View 新加行的默认值的设定 需要指定新加行的默认值的时候,可以在Data Grid View. Clipboard Copy Mode 属性被设定为 Data Grid View Clipboard Copy Mode. NET,新加的行会被自动排序至合适的位置。 4.1.3.7 关于新行,还要注意: 你不能将新行的Visible属性值设置为false,否则会触发一个Invalid Operation Exception类型的异常。 新行在创建时总是处于非选中(unselected)状态。 4.1.3.8 Virtual Mode下的新行 如果你正要实现虚拟模式(Virtual Mode),需要考虑数据模型添加新行和回滚添加操作的情况。该功能准确的实现方式取决于数据模型的实现方式及其事务机制,例如,提交的时候是针对单元格还是行。参看本文档后面关于Virtual Mode的主题。 4.2 关于Null值 在使用数据源的时候,比如数据库或业务对象,经常需要处理null值。null值可能是一个实际的null(VB中为Nothing),也可能是一个数据库的”null”值(DBNull. Default Values Needed事件里处理。在该事件中处理除了可以设定默认值以外,还可以指定某些特定的单元格的Read Only属性等。 // Default Values Needed 事件处理方法 private void Data Grid View1_Default Values Needed(object sender, Data Grid View Row Event Args e) 三、针对datagridview全局属性的设置 使用 Edit Mode 属性 Data Grid View. Edit Programmatically 时,用户就不能手动编辑单元格的内容了。但是可以通过程序,调用 Data Grid View. Disable 以外的情况时,「Ctrl C」 按下的时候,被选择的单元格的内容会拷贝到系统剪切板内。格式有: Text, Unicode Text,Html, Comma Separated Value。可以直接粘贴到 Excel 内。 Clipboard Copy Mode 还可以设定 Header部分是否拷贝: Enable Always Include Header Text 拷贝Header部分、Enable Without Header Text 则不拷贝。默认是 Enable With Auto Header Text , Header 如果选择了的话,就拷贝。 1) 编程方式实现剪切板的拷贝 Clipboard. Get Clipboard Content()) 2) Data Grid View 的数据粘贴 实现剪切板的拷贝比较容易,但是实现 Data Grid View 的直接粘贴就比较难了。「Ctrl V」按下进行粘贴时,Data Grid View 没有提供方法,只能自己实现。 以下,是粘贴时简单的事例代码,将拷贝数据粘贴到以选择单元格开始的区域内。 //当前单元格是否选择的判断 if (Data Grid View1. Trim End(new char[] ); string[] lines = paste Text. Context Menu Strip2; // 列头的 Context Menu Strip 设定 Data Grid View1. Value),当你遭遇了这些值,就需要考虑如何显示它们。另一方面,很多时候,你还需要向数据源写入null值。使用单元格Style的Null Value属性和Data Source Null Value 属性,你可以改变Data Grid View处理null值的方式。 4.2.1 Null Value属性 Data Grid View Cell Style. Empty (“”) Check Box Column 默认值取决于Three State属性的值,如果为true,默认值为Check State.

cellvalidating change value-5cellvalidating change value-58cellvalidating change value-40

Current Cell = Data Grid View1[0, 0]; 在整行选中模式开启时,你也可以通过 Current Cell 来设定选定行。 /// private void button5_Click(object sender, Event Args e) ...

One thought on “cellvalidating change value”

  1. This is a simple feature that generates questions and quizzes to determine the compatibility of a user to another. Nevertheless, it is a great site for lovers of music, concerts and organists. It is your go to site when you want to meet people with whom you share the love of music. The only difference is that Passion Network has more specific niches (over 250 unique dating niches).