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.

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.

datagridviewcheckboxcolumn cellvalidating-5datagridviewcheckboxcolumn cellvalidating-1datagridviewcheckboxcolumn cellvalidating-60

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??

C#针对datagridview 操作收集的一些资料,内容比较乱,以后再整理 C#对Data Grid View进行添加、修改、删除数据操作 数据库用的是本地服务器(My Sql): 设定全局变量: My Sql Connection conn; My Sql Data Adapter adapter; My Sql Transaction trans; 1. Auto Resize Columns(Data Grid View Auto Size Columns Mode. All Cells; // 设定包括Header和所有单元格的行高自动调整 Data Grid View1. de 若要重写控件的列大小的单个列模式,将其Auto Size Mode属性的值比Not Set等。一列大小调整模式实际上是取决于它的Inherited Auto Size Mode财产。这个属性的值是基于列的Auto Size Mode属性值,除非该值是Not Set,在这种情况下控制的Auto Size Columns Mode值继承。 请谨慎使用基于内容的自动调整大小时,大量数据的工作。为了避免性能下降,使用自动调整大小模式,而不是分析计算中的每一行控制的基础上所显示的行唯一的大小。为获得最佳性能,使用编程调整大小,而不是让你在特定的时间可以调整,如新的数据后立即加载。 基于内容的自动调整大小模式不会影响行,列或标题,你已经通过设置行或列的Visible属性或控制Row Headers Visible或Column Headers Visible属性为false隐藏。例如,如果列是隐藏后,它会自动调整以适应一个大单元格的值,隐藏的列将不会改变它的大小,如果大所在的行单元格的值将被删除。自动调整大小时,不会出现能见度的变化,因此更改列的Visible属性返回true,将不会强迫它重新计算其大小的当前内容为基础。 方案内容为基础的大小影响的行,列和标题不论其知名度。 5.3.4编程调整大小 禁用自动调整大小时,您可以通过编程设置精确的宽度通过下列属性或行,列或标题的高度: ? 准通过所提供的边框样式: 边框值描述 Fixed3D一个三维边框。 Fixed Single单行边框。 无无边框。 5.7.2高级边境风格 Data Grid View控件允许你完全自定义其外观,包括细胞和头的边界。 Data Grid View的有Cell Border Style,Column Headers Border Style和Row Headers Border Style属性,让您设置单元格边框的外观。但是,如果您需要进一步定制边界,Data Grid View Advanced Border Style类允许您设置单元格的个人双方的边框样式。对Data Grid View Advanced Border Style左,右,顶部和底部属性代表左,右,上,一个细胞和底部边框,分别为。您可以设置在Advanced Cell Border Style,Advanced Column Headers Border Style,Advanced Row Headers Border Style Data Grid View的属性这些属性产生的细胞之间的边界,展现多种风采。 下表列出了可用的先进的边框样式,可以设置为左,右,顶部和底部部分。请注意,某些组合是无效的。 边框值描述 嵌入一?? Get Clipboard Content检索()方法为个别单元格的值。你可以重写派生类中任一这些方法或两个自定义复制的单元格的布局,或支持格式的其他数据。 5.10冻结的列/行 当用户查看数据有时他们需要参考一列或列集频繁。例如,当显示的客户信息表,其中包含许多列,显示是非常有用的在任何时候,客户名称,同时使其他列可见区域之外的滚动。 为了实现这一行为,您可以冻结在控制列。这是通过设置在列或行冻结的财产。当你冻结一列,所有列在它的左边(或在从右到左的语言脚本右),冻结。冻结列留在原地,而所有其他列可以滚动。行以类似的方式行事:前行中的所有行被冻结的冻结,以及维持不变,而在非冰冻行可以滚动。 5.11实现自定义和编辑控制细胞/细胞 您可以实现在你的派生类来创建一个细胞的细胞类型具有编辑功能,但不承载的编辑模式控制IData Grid View Editing Cell接口。要创建一个控件,你可以在一个宿主细胞中的编辑模式,可以实现从Control派生的类IData Grid View Editing Control接口。 5.11.1 IData Grid View Editing Control 支持先进的单元格编辑功能通常使用一个托管控件是从Windows窗体控件派生的。此接口由编辑控件,如Data Grid View Combo Box Editing Control和Data Grid View Text Box Editing Control,这是由相应的Data Grid View单元格,如的Data Grid View Combo Box Cell和Data Grid View Text Box Cell,当他们处于编辑模式主持。 单元格可以承载编辑控件设置其Edit Type属性类型,表示一个类型的编辑控件的类型。 5.11.2 IData Grid View Editing Cell 此接口的类没有提供存取指定的编辑控制值的用户界面(UI)。在这种情况下用户界面显示无论是在细胞处于编辑模式。该Data Grid View Check Box Cell的是一个细胞,它实现了IData Grid View Editing Cell接口的例子。 其他细胞类型,如的Data Grid View Button Cell,提供一个用户界面,但不存储用户指定的值。在这种情况下,细胞类型不落实IData Grid View Editing Cell或主机一个编辑控制。 5.12虚拟模式 使用虚拟模式,您可以管理之间的Data Grid View控件和自定义数据缓存交互。为了实现虚拟模式,设置Virtual Mode属性为true,并处理一个或本主题描述的事件更多。您通常处理至少Cell Value Needed事件,它使控件的外观在数据缓存值。 5.12.1绑定模式和虚拟模式 虚拟模式只有当你需要补充或替换绑定模式。在绑定模式下,可以设置Data Source属性和控制自动加载从指定的源数据和提交给它的用户更改回来。您可以控制?? 确保该行的index Source参数指定当呼叫可以共享的行集合Add Copy,Add Copies,Insert Copy和Insert Copies方法。 ? Collection Changed或Row State Changed事件。这些事件会导致行成为非共享。另外,不要叫Data Grid View Row Collection. 不要调用Sort方法的Sort(IComparer接口)超载。一个自定义比较排序会导致所有行成为非共享。 附录 A – FAQ 该附录包含的代码示例和片段集中解答了前面散落的常见问题: 1. Read Only属性决定了单元格中的数据是否可以编辑,可以设置单元格的Read Only 属性,也可以设置Data Grid View Row. Read Only使得一行或一列所包含的单元格都是只读的。 默认情况下,如果一行或一列是只读的,那么其包含的单元格也会使只读的。 不过你仍可以操作一个只读的单元格,比如选中它,将其设置为当前单元格,但用户不能修改单元格的内容。注意,即使单元格通过Read Only属性设置为只读,仍然可以通过编程的方式修改它,另外Read Only也不会影响用户是否可以删除行。 2. 单元格可以设置为只读而不可编辑,但Data Grid View却没提供使单元格不可用的支持。一般意义上,不可用意味着用户不能进行操作,通常会带有外观的暗示,如灰色。没有一种简单的方法来创建那种不可操作的单元格,但提供一个暗示性的外观告诉用户某单元格不可用还是可行的。内置的单元格类型没有进行不可用设置的属性,下面的例子扩展了Data Grid View Button Cell ,参照常见控件的Enabled属性,为其添加了Enabled属性,如果该属性设置为false,那么其外观状态将类似于普通按钮的不可用状态。 public class Data Grid View Disable Button Column : Data Grid View Button Column public class Data Grid View Disable Button Cell : Data Grid View Button Cell 3. 如何隐藏一列? 有时希望仅显示Data Grid View的部分列,将其它列隐藏。比如Data Grid View含有一列包含员工薪水信息,你可能希望仅将这些信息显示给具有一定信用级别的人,其他人则隐藏。 通过编程方式隐藏 Data Grid View Column类的Visible 属性决定了是否显示该列。 通过设计器隐藏 1) 右击Data Grid View控件,选择Edit Columns; 2) 在列列表中选择一列; 3) 在列属性网格中,将Visible属性设置为false。 8. 默认情况下Data Grid View不支持针对多列排序。下面针对是否将数据绑定到Data Grid View来分别演示如何为其添加多列排序功能。 9.1 将数据绑定到Data Grid View时 Data Grid View进行数据绑定的时候,数据源(如Data View)可对多个列排序。Data Grid View会保留这种排序,但只有第一个排序列会显示排序符号(向上或向下的箭头),此外Sorted Column属性也只会返回第一个排序列。 一些数据源内置了对多列排序的支持。如果你的数据源实现了IBinding List View接口,提供了对Sort属性的支持,那么该数据源就支持多列排序。为了明确指出Data Grid View对多列排序,手动为已排序列设置正确的Sort Glyph Direction属性,指示该列已经排序。 下面这个示例使用Data Table作为数据源,使用其Default View的 Sort 属性对第二列和第三列排序;该示例同时演示了如何设置列的Sort Glyph Direction属性。该示例假定在你的窗体上有一个Data Grid View控件和一个Binding Source组件: Data Table dt = new Data Table(); dt.

//修改数据,并将数据提交到数据库 private Boolean db Update() { string str Sql = "select Products Spec ID, Products Spec, Products Spec Unit, Products ID from tbl_product_detail_master"; System. Auto Size To All Headers; 4) 随时自动调整 a, 临时的,让列宽自动调整,这和指定Auto Size Columns Mode属性一样。 // 让 Data Grid View1 的所有列宽自动调整一下。 Data Grid View1. Auto Size Columns Mode = Data Grid View Auto Size Columns Mode. ntal和Single Vertical值。这些枚举的其他值使用由操作系统指定的颜色。此外,当视觉样式的Windows XP及以上的启用,Grid Color属性值不被使用。 5.7.1标准边框样式 边框样式控制标准通过Cell Border Style,Row Headers Border Style和Column Headers Border Style属性。 下表列出了标?? 单元格,行,列的Read Only属性和控制,都设置为false。 在编辑模式下,用户可以更改单元格的值,然后按Enter键提交更改或ESC细胞恢复到其原始值。 您可以配置一个Data Grid View控件,以使单元格进入编辑模式,一旦它成为当前单元格。该ENTER键和ESC键的行为在这种情况下保持不变,但细胞仍然处于编辑模式后,该值被提交或还原。您还可以配置控制,使细胞进入编辑模式仅当用户键入单元格或只有当用户按下F2键。最后,您可以阻止其进入编辑,除非你调用Begin Edit方法模式细胞。 下表描述了不同的编辑模式可供选择: 编辑模式值描述 Edit On Enter编辑开始时,细胞接收焦点。这种模式是有用的当按下TAB键,进入跨越行值,或当按下回车键,进入下一个列值。 Edit On F2编辑开始时按下F2键时,单元格具有焦点。此模式放置在单元格内容的末尾的选择点。 开始编辑Edit On Keystroke当任何字母数字键被按下,而细胞具有焦点。 Edit On Keystroke Or F2编辑开始时,任何字母数字键或F2键被按下,而细胞具有焦点。 Edit Programmatically编辑时,才开始Begin Edit方法被调用。 5.9剪贴板拷贝模式 当你使细胞复制,你才能在Data Grid View控件的数据很容易接触到其他应用程序通过剪贴板。 Data Grid View控件复制到选定的单元格的每个剪贴板的文本表示。此值是单元格的值转换为图像细胞,Description属性的值的字符串或。其内容后加入为制表符分隔的文本值的剪贴簿在诸如记事本和Excel应用程序粘贴,并作为应用程序,如Word粘贴到HTML格式的表格。 您可以配置单元格值复制到复制只,包括在剪贴板上的数据行和列标题文本,或包含标题文本仅当用户选择整个行或列。 下表列出了不同的剪贴板复制模式: 剪贴板拷贝模式说明 禁用复制到剪贴板被禁用。 Enable Always Include Header Text所选单元格的文本值可以被复制到剪贴板。标题文字是否列入行和包含选定单元格的列。 Enable With Auto Header Text所选单元格的文本值可以被复制到剪贴板。行或列标题的文本包含或包含的行只选择当Selection Mode属性设置为Row Header Select或Column Header Select和至少一个头被选中单元格的列。 Enable Without Header Text所选单元格的文本值可以被复制到剪贴板。标题文字是否不包括在内。 在选择模式的不同,用户可以选择多个不连续的细胞群。当用户复制到剪贴板细胞,行和列,没有选定的单元格不会被复制。所有其他行或列成为复制到剪贴板上的数据表的行和列。在这些行或列未选定的单元格被复制到剪贴板作为空白占位符。 当用户复制内容时,Data Grid View控件添加到剪贴板Data Object中。此数据对象是取自Get Clipboard Content()方法。你可以调用这个方法时,您希望以编程方式将数据添加对象到剪贴板。该Get Clipboard Content()方法通过调用Data Grid View Cell. This can be controlled via the Wrap Mode property on the cell style (e.g. Padding 属性来调整文本的位置,重写了Paint 方法来绘制图片。该示例可以得到简化,方法是处理Cell Painting 事件,在这里实现类似的功能。 public class Text And Image Column: Data Grid View Text Box Column public class Text And Image Cell : Data Grid View Text Box Cell 7.

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

Read Only = true; Data Grid View 行头列头的单元格 // 改变Data Grid View1的第一列列头内容 Data Grid View1. Tool Tip Text = "该单元格的内容不能修改"; // 设定列头的单元格的Tool Tip内容 Data Grid View1. Tool Tip Text = "该列只能输入数字"; // 设定行头的单元格的Tool Tip内容 Data Grid View1. Border Style 属性来设定的。 Border Style 属性设定值是一个 Border Style 枚举: Fixed Single(单线,默认)、Fixed3D、None。 2) 单元格的边框线样式的设定 单元格的边框线的样式是通过 Data Grid View. Bottom = _ Data Grid View Advanced Cell Border Style. Inset Double 同样,设定行头单元格的属性是: Advanced Row Headers Border Style, 设定列头单元格属性是:Advanced Column Headers Border Style。 Data Grid View 单元格表示值的自定义 通过Cell Formatting事件,可以自定义单元格的表示值。(比如:值为Error的时候,单元格被设定为红色) 下面的示例:将“Colmn1”列的值改为大写。 //Cell Formatting 事件处理方法 private void Data Grid View1_Cell Formatting(object sender, Data Grid View Cell Formatting Event Args e) Cell Formatting事件的Data Grid View Cell Formatting Event Args对象的Value属性一开始保存着未被格式化的值。当Value属性被设定表示用的文本之后,把Formatting Applied属性做为True,告知Data Grid View文本已经格式化完毕。如果不这样做的话,Data Grid View会根据已经设定的Format,Null Value,Data Source Null Value,Format Provider属性会将Value属性会被重新格式化一遍。 Data Grid View 用户输入时,单元格输入值的设定 通过 Data Grid View.

Read Only = true;此时,用户的新增行操作和删除行操作也被屏蔽了。 ******如果希望,Data Grid View 内某个单元格不可编辑, 那么只要: // 设置 Data Grid View1 的第2列整列单元格为只读 Data Grid View1. Read Only = true; // 设置 Data Grid View1 的第3行整行单元格为只读 Data Grid View1. Read Only = true; // 设置 Data Grid View1 的[0,0]单元格为只读 Data Grid View1[0, 0]. Value = "第一列"; // 改变Data Grid View1的第一行行头内容 Data Grid View1. Show Cell Tool Tips = True 的情况下, 单元格的 Tool Tip 可以表示出来。对于单元格窄小,无法完全显示的单元格, Tool Tip 可以显示必要的信息。 1) 设定单元格的Tool Tip内容 // 设定单元格的Tool Tip内容 Data Grid View1[0, 0]. Tool Tip Text = "该行单元格内容不能修改"; 2) Cell Tool Tip Text Needed 事件 在批量的单元格的 Tool Tip 设定的时候,一个一个指定那么设定的效率比较低, 这时候可以利用 Cell Tool Tip Text Needed 事件。当单元格的 Tool Tip Text 变化的时候也会引发该事件。但是,当Data Grid View的Data Source被指定且Virual Mode=True的时候,该事件不会被引发。 // Cell Tool Tip Text Needed事件处理方法 private void Data Grid View1_Cell Tool Tip Text Needed(object sender, Data Grid View Cell Tool Tip Text Needed Event Args e) Data Grid View 的单元格的边框、 网格线样式的设定 1) Data Grid View 的边框线样式的设定 Data Grid View 的边框线的样式是通过 Data Grid View. Left = _ Data Grid View Advanced Cell Border Style. Data Source = view; Data Grid View Text Box Column col0 = new Data Grid View Text Box Column(); col0.

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.