C cellvalidating event sex dating spb

6854933580_2c8b688306_z

Auto Resize Row(0, Data Grid View Auto Size Row Mode. Auto Resize Rows() c,临时的,让行头和列头自动调整 // 列头高度自动调整 Data Grid View1. Value Member = "Stu Num"; ((Data Grid View Combo Box Cell)dgv Student List. Auto Size Mode = Data Grid View Auto Size Column Mode. Parse Formatted Value(int row Index)方法控制。 默认情况下,会再次使用Type Converter来将Formatted Value解析为单元格的真实值,这时会触发Data Grid View的Cell Parsing事件,这时你就有机会修改单元格的解析方式了。. 充它的宽度控制方法。 大小时自动调整单元格内容的变化,以避免裁减和优化使用空间。设置一个自动调整大小属性的值,表示一个基于内容的大小调整模式。为了避免性能下降时,大量的数据工作,使用一个尺寸模式,只计算显示的行。 调整大小以适应显示的行值,以避免性能下降时,许多行工作。使用自动或编程调整大小适当的调整大小模式枚举值。要调整大小,以适应在新显示的行滚动时,请在一个滚动的事件处理程序大小的方法价值。定制用户双击调整大小,以便显示的行的值只有在确定新的尺寸,要求在一个Row Divider Double Click或Column Divider Double Click事件处理程序大小的方法。 只有在特定时间调整大小以适应单元格内容,以避免性能罚款或启用用户调整大小。调用事件处理程序中的基于内容的大小的方法。例如,使用Data Binding Complete事件绑定后初始化大小和处理Cell Validated或Cell Value Changed事件调整大小,以弥补用户编辑或绑定的数据源的变化。 调整多行单元格内容的行高。确保该列的宽度是用于显示相应的文本段落并使用自动或编程的基于内容的行大小来调整高度。另外,还要确保与细胞显示多内容使用的Wrap Mode细胞式的真实价值。 通常,你会使用自动调整大小模式,以维持列列宽或将其设置为特定宽度前行高进行调整。 5.3.2用鼠标调整大小 默认情况下,用户可以调整行,列和标题不使用自动大小调整模式对细胞价值观为基础。为了防止其他模式,例如列填充模式,缩放用户设置一个或以下的Data Grid View属性: ? 要确定是否所有在Data Grid View单元格已被选中,然后再访问该Selected Cells集合的内容,检查Are All Cells Selected方法的返回值。请注意,但是,这种方法可能会导致行成为非共享。有关详细信息,请参阅下一节。 ?

All Cells);上面调用的 Auto Resize Rows 和 Auto Resize Row 当指定的是Data Grid View Auto Size Row Mode. Auto Resize Column Headers Height(); // 行头宽度自动调整 Data Grid View1. Data Source = list; ((Data Grid View Combo Box Cell)dgv Student List. All Cells; 这就搞定了,效果就是列宽会根据内容以及表头宽度自行判断,最后调整到合适的宽度。 Auto Size Mode这个属性并不显示在“属性”窗口中。 如果你的Data Grid View是动态绑定数据的, 那就只能在代码中设置。 如果你的Data Grid View列名是设计好的,那么可以在Data Grid View上点击右键,选择“编辑列”,然后选中你要设置自适应的列,在它的属性列表中的“布局”选项卡里面选择Auto Size Mode的类型。 Auto Size Mode属性可以设置的值还有不少: 成员名称 说明 Not Set 列的大小调整行为从Data Grid View. 如果单元格不能得到正确地解析,会触发Data Error事件。 Data Grid View Text Box Column是一种通用的列类型,用于表示基于文本的值,比如数字和字符串。在编辑模式下,会有一个Text Box控件出现在当前活动单元格,用户可以修改单元格的值。 单元格的值在显示时会自动转换为字符串。用户输入或修改的值在提交时则被自动解析为合适的数据类型以创建一个单元格的值。通过处理Cell Foamatting和Cell Parsing事件,你可以自定义这些转换的方式。比如将数据源的日期字段以特定的形式显示,对某些特殊单元格作出特殊的标记。 一般情况下,Check Box类型的单元格要么用于存储数据,就像其它类型的数据一样,要么用于进行一些重要操作。用户点击Check Box单元格时,如果你希望对此立即做出反应,可以处理Cell Click事件,但该事件发生在单元格的值更新之前。如果点击之时就希望获得新值,一种选择是根据当前值计算点击后的值;另一种方法是立即提交值的变化,然后在Cell Value Changed事件处理函数中对此作出反应,而要在用户点击单元格时立即提交值的变化,你必须处理Current Cell Dirty State Changed事件,在这里,调用Commit End方法提交新值。 3.3 Data Grid View Image Column Data Grid View Image Column 类型的列用于显示图像。这种类型的列有三种方法生成:绑定到数据源时自动生成;为非绑定列手动生成;在Cell Formatting事件处理函数(该事件发生在单元格显示前)中动态生成。 绑定到数据源时自动生成Image列的方法适用于大量的图像格式,包括. 避免使用的Data Grid View Selected Cell Collection Count属性来确定所选细胞的数量。相反,使用Get Cell Count()方法并传入Data Grid View Element States.

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.

如果希望,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 属性 ?

Value。 4.3 Data Error事件 将Data Error事件独立出来作为一个主题,是因为在操作数据时,经常会遭遇Data Error事件。在操作数据时,Data Error主要发生在一下情况:不能读/写或转换单元格的数据;在尝试进行某种编辑操作时发生了异常。 编辑操作中的Data Error 事件 下面的列表列出了可能会引发Data Error事件的编辑操作: 取消编辑(Canceling an edit) 刷新一个编辑 (通过调用Refresh Edit方法) 尝试将单元格的值写入数据源 初始化编辑控件\单元格的值(通过设置单元格的Formatted Value属性或调用单元格的Initialize Editing Control方法) 结束编辑(Ending an edit) 提交编辑(Committing an edit) 删除一行(Deleting a row) Data Error的上下文: 下面的列表显示了不同的Data Error上下文环境,然后进一步说明了这些上下文环境合适可能发生: 4.4 数据绑定模式(Databound modes) 4.4.1 非绑定模式(Unbound Mode) 如果你要在程序中管理数量相对较小的数据,那么非绑定模式会比较合适。此时你不是像绑定模式中那样将Data Grid View控件直接指向一个数据源,而是手动去生成控件。一般需要用到Data Grid View Row Collection.

Grid Color 属性来设定的。默认是 Control Dark Dark 。但是只有在 Cell Border Style 被设定为 Single、Single Horizontal、Single Vertical 的条件下才能改变其边框线的颜色。同样,Column Headers Border Style 以及 Row Headers Border Style 只有在被设定为 Single 时,才能改变颜色。 4) 单元格的上下左右的边框线式样的单独设定 Cell Border Style只能设定单元格全部边框线的式样。要单独改变单元格某一边边框式样的话,需要用到Data Grid View. Add 为 Data Grid View 追加新行。 补足: 如果 Data Grid View 的 Data Source 绑定的是 Data View, 还可以通过设置 Data View. Allow User To Delete Rows = false; 但是,通过 Data Grid View Row Collection. Current Cell == null) return; int insert Row Index = Data Grid View1. Row Index; // 获取剪切板的内容,并按行分割 string paste Text = Clipboard. Is Null Or Empty(paste Text)) return; paste Text = paste Text. Split(' '); bool is Header = true; foreach (string line in lines) Data Grid View 的右键菜单(Context Menu Strip) Data Grid View, Data Grid View Column, Data Grid View Row, Data Grid View Cell 有 Context Menu Strip 属性。可以通过设定 Context Menu Strip 对象来控制 Data Grid View 的右键菜单的显示。 Data Grid View Column 的 Context Menu Strip 属性设定了 除了列头以外的单元格的右键菜单。 Data Grid View Row 的 Context Menu Strip 属性设定了除了行头以外的单元格的右键菜单。Data Grid View Cell 的 Context Menu Strip 属性设定了指定单元格的右键菜单。 // Data Grid View 的 Context Menu Strip 设定 Data Grid View1. Context Menu Strip1; // 列的 Context Menu Strip 设定 Data Grid View1. Null Value 属性本来要被命名为Formatted Null Value 的,但是后来没来得及作出这个更改。但它能给我们带来一点提示——顾名思义,在格式化时会用到它。如果一个单元格的值为”null”(等于null或DBNull. Value),它会使用你设置的Null Value属性来显示。该属性的默认值取决于所在列的类型,见下图: Data Grid View列类型 列的Default Cell Style. Empty (“”) Image Column 空的图像( ) Combo Box Column String. Indeterminate ,否则为unchecked。 有一点要了解,在用户输入数据时也会用到Null Value。例如,若用户向Text Box类型单元格输入了string. Empty,那么会将null作为该单元格的值。 查看下面的Data Source Null Value属性以了解究竟是输入了什么作为单元格的值。 4.2.2 Data Source Null Value属性 Data Grid View Cell Style. Red值是第一个在名单上的实际价值。这成为该单元格的Inherited Style Fore Color属性值。 下图说明了不同的Data Grid View Cell Style属性可以继承他们的价值观不同的地方。 通过利用样式继承的优势,可以提供,而无需指定相同的信息在多个地方为整个控制适当的样式。 虽然标题单元格样式继承中所描述的身份参加,由Data Grid View控件的Column Headers Default Cell Style和Row Headers Default Cell Style属性返回的对象具有初始属性值覆盖由Default Cell Style属性返回的对象的属性值。如果你想由Default Cell Style属性返回的对象设置为适用于行和列标题的属性,你必须设置由Column Headers Default Cell Style和Row Headers Default Cell Style属性返回的Data Grid View Cell Style类为默认显示对象的相应属性。 注:如果启用视觉样式,行和列标题(除Top Left Header Cell)会自动由当前的主题风格,覆盖了这些属性所指定的任何样式。设置Enable Headers Visual Style属性为false,如果你想标题不使用XP的视觉样式。 该Data Grid View Button Column,Data Grid View Image Column和Data Grid View Check Box Column类型还初始化由列Default Cell Style属性返回的对象的一些值。有关详细信息,请参见这些类型的参考文件。 5.1.4设置样式动态 要自定义,特别值的单元格的样式,实施一项Cell Formatting事件的处理程序。此事件的处理程序收到的Data Grid View Cell Formatting Event Args类型的参数。此对象包含的属性,让您确定单元格的值被格式化,其在Data Grid View控制地沿。此对象还包含一个Cell Style属性,初始化为单元格的Inherited Style属性值被格式化。您可以修改单元格样式属性来指定样式的信息适合单元格的值和位置。 注:Row Pre Paint和Row Post Paint事件还接收事件数据的Data Grid View Cell Style对象,但他们的案件,这是该行Inherited Style属性为只读目的副本,以及它的变更不会影响控制。 您还可以动态改变以因应如Cell Mouse Enter和Cell Mouse Leave活动活动单个细胞的风格。例如,在为Cell Mouse Enter事件处理程序中,你可以存储单元格的背景颜色(通过细胞的Style属性检索)的当前值,然后将其设置为一个新的色彩,将突出显示单元格时在它的鼠标悬停。在为Cell Mouse Leave事件处理程序,然后就可以恢复到原来的背景颜色值。 注:缓存在细胞的Style属性中存储的值是重要的,无论是否设置特定的样式值。如果您暂时替换样式设置,恢复到原来的“未设置”国家保障,细胞会返回从更高的层次继承的样式设置。如果您需要确定在一个单元的实际效果风格的风格无论是继承,使用单元格的Inherited Style属性。 5.2风俗画 Data Grid View控件提供了多个属性,您可以用它来调整外观和基本行为(外观和感觉)的单元格,行和列。如果您有要求,超越的Data Grid View Cell Style类的功能的时候,你可以执行单元格或行的内容自定义绘制。单元格和行画自己,你可以处理各种如Row Pre Paint的Data Grid View,Cell Painting和Row Post Paint绘画活动。 5.2.1油漆件 自定义绘制的一个重要部分是油漆部件的概念。该Data Grid View Pain Parts枚举用于指定哪些部分细胞油漆。枚举值可结合在一起,有一个单元不油漆涂料或特定部分。这里是不同的部分: Paint Part为例前景色为检索对象的价值 所有的所有部件都画 背景单元格的背景是画使用单元格的背景颜色(1) 边境的边界是画 Content Background单元格的内容是画背景的一部分。 (2) Content Foreground单元格的内容的前景部分是画(2) Error Icon错误图标画 重点加强对单元格焦点矩形画 没有任何部分是画(1) Selection Background画的背景是,如果选中该单元格被选中。 注释 1)如果一个单元格不绘制其背景则没有什么是画。一个行或列执行任何作画,确保至少细胞的背景画,或者您执行您自己的自定义背景画,否则仍然是无效的矩形(着色)。 2)每个单元确定什么前景为内容的背景和内容,如下面的列表描述的那样涂料: 细胞类型的内容前景内容背景 文本框单元格的文字是画没有画 扣式电池文字画,画按钮 组合框单元格的文字是画,画组合框 选中复选框是画没有画 链接单元格文本链接是没有画成画 图像细胞图像是画没有画 标题栏标题栏文字排序雕画 行头行头文字Current行三角形,编辑铅笔和新行的指标是画 5.2.2行预油漆涂料和邮政业 您可以通过处理一个或Data Grid View. Row Post Paint两个事件的Data Grid View行的外观。这些活动的设计,让你可以画只有你想在Data Grid View控制,而让其余的油漆。例如,如果你想画一个自定义的背景,你可以处理Data Grid View. 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. Expression 属性来创建一个计算列,在这种情况下,在DGV看来,这一列就跟数据源中其它列是一样的。 在绑定模式下根据非绑定列排序是不受支持的。如果你在绑定模式下创建了非绑定列,你必须实现虚拟模式,这样在根据绑定列排序时可以维护非绑定列的值。 如果添加的非绑定列不能由数据源数据计算得来或者这些数据会频繁更新,你就应该使用虚拟模式。要了解虚拟模式的更多信息,请参看本文档后面的虚拟模式相关章节。 5 特性综览(Overview of features) 5.1 样式(Styling) Data Grid View使得定义单元格的基本外观和格式化单元格显示变得简单。 您可以定义的外观和在特定的列和行,或在通过各种设置Data Grid View控件属性访问的Data Grid View Cell Style对象的属性控制所有细胞的单个单元格的格式样式。此外,您可以修改,如通过处理Cell Formatting事件的单元格值因素的基础上动态这些样式。 Data Grid View控件中的每一个细胞都可以拥有如文本格式,背景色,前景色和字体自己的风格。但是,通常多个单元格将分享独特的风格特点。 细胞群体共享样式可能包括在特定行或列的所有单元格包含特定值,或控件中的所有细胞的所有细胞。由于这些群体重叠,每个单元可能会从多个位置的样式?? 信息。例如,您可能会希望每个在Data Grid View控件使用相同的字体细胞,只有细胞货币列,但使用货币格式,负数和货币细胞只使用红色前景色。 单击单元格以选中它,行列标题不能用于选择。 Column Header Select 单击单元格以选中它,单击列标题选中整列。此时列标题不能用于排序。 Full Column Select 单击单元格或列标题会选中它们所在的列,此时列标题不能用于排序。 Full Row Select 单击单元格或行标题会选中它们所在的行。 Row Header Select DGV的默认选择模式,单击单元格选中该单元格,单击行标题则选中整行。 注意: 在运行时改变选择模式会自动清除当前选择的内容。 5.4.1 Programmatic Selection 注意:改变Current Cell属性的值不会改变当前选择的内容。 通过Selected Cells、Selected Rows和Selected Columns属性你可以访问当前选中的单元格、行和列。不过当所有单元格都被选中的时候,使用这些属性效率会比较低,为此可首先使用Are All Cells Selected方法查看是否已选中全部单元格。此外,访问这些属性来查看选中单元格、行和列的数目效率也比较低,此时应该使用Get Cell Count、Get Row Count和Get Column Count方法,传给它们的参数为Data Grid View Element States. User Deleting Row 事件。 在这个事件里,可以判断条件并取消删除操作。 // Data Grid View1 的 User Deleting Row 事件 private void Data Grid View1_User Deleting Row( object sender, Data Grid View Row Cancel Event Args e) Data Grid View 行、列的隐藏和删除: 1) 行、列的隐藏 // Data Grid View1的第一列隐藏 Data Grid View1. Visible = false; // Data Grid View1的第一行隐藏 Data Grid View1. Visible = false; 2) 行头、列头的隐藏 // 列头隐藏 Data Grid View1. Allow User To Resize Columns = false; //禁止用户改变Data Grid View1の所有行的行高 Data Grid View1. False; // 禁止用户改变Data Grid View1的第一列的行宽 Data Grid View1. Not Set 时, 实际上会默认以 Data Grid View 的 Allow User To Resize Columns 和 Allow User To Resize Rows 的属性值进行设定。比如: Data Grid View.

You must have an account to comment. Please register or login here!