C cellvalidating event Filthy online sex chat

Rated 4.9/5 based on 953 customer reviews

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.

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.

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

Row Headers Visible = false; 3) 行和列的删除 ' 删除名为"Column1"的列 Data Grid View1. Column Headers Height Size Mode = Data Grid View Column Headers Height Size Mode. Row Headers Width Size Mode = Data Grid View Row Headers Width Size Mode. Auto Resize Row Headers Width 这些方法将调整行,列或标题一次,而不是连续的大小配置它们。新的大小自动计算显示没有剪辑的所有单元格内容。当您以编程方式调整列有填充Inherited Auto Size Mode属性值,但是,计算出的基于内容的宽度按比例用于调整列Fill Weight属性值,实际列宽,然后根据这些新的计算比例,让所有列填充该控件的可用显示区域。 编程调整大小可以有效避免连续调整大小的性能损失。它也为用户提供有用的调整大小的行,列和标题的初始大小,列填充模式。 你通常会在特定时间调用的方案调整方法。例如,您可能编程加载数据后,立即调整所有列,或者你可能一个特定的编程方式调整后的行某单元格值已被修改。 5.3.5自定义基于内容的调整大小行为 您可以自定义大小的行为时,派生的Data Grid View单元格,行和列类型的工作通过覆盖Data Grid View Cell. de,布尔)的Auto Resize Rows方法重载并传入一个虚假的布尔参数的值,过载将计算在该行细胞的理想的高度和宽度,但它会调整行高而已。然后,您必须调用Auto Resize Columns方法来调整列宽度以计算的理想选择。 5.3.6基于内容的调整大小选项 由大小属性和方法使用的枚举有基于内容的大小相似的价值观。有了这些值,你可以限制哪些细胞是用来计算首选大小。对于所有大小枚举,其名称是指显示的单元格的值限制在他们的计算显示的行的单元格。不包括行是有用的,以避免性能损失,当您使用的是大量的行工作。您还可以限制的计算,以在页眉或nonheader细胞的细胞值。 5.4选择模式 Data Grid View控件提供了一系列用于配置用户如何选择单元格,行和列的多种选择你。例如,您可以启用单一或多重选择,全行或列的选择,当用户单击单元格,行或整列选择或仅当用户点击他们的标题,也使小区选择。如果您要提供您的选择自己的用户界面,您可以禁用普通的选择和处理所有的编程选择。此外,还可以让用户选定的值复制到剪贴板。 有时候你希望你的应用程序来执行的Data Grid View控制范围内用户的选择为基础的行动。根据不同的操作,您可能希望限制的种类的选择都是可能的。例如,假设你的应用程序可以打印出当前选中的记录报告。在这种情况下,您可能需要配置的Data Grid View控件,以便在连续点击任何地方总是选择整行,所以这只能有一个时间行可以被选中。 您可以通过设置Selection Mode属性为下列Data Grid View Selection Mode枚举值之一允许的选择。 Data Grid View Selection Mode值描述 Cell Select单击单元格以选中它,行列标题不能用于选择。 Column Header Select单击单元格以选中它,单击列标题选中整列。此时列标题不能用于排序。 Full Column Select单击单元格或列标题会选中它们所在的列,此时列标题不能用于排序。 Full Row Select单击单元格或行标题会选中它们所在的行。 Row Header Select DGV的默认选择模式,单击单元格选中该单元格,单击行标题则选中整行。 注意:在运行时改变选择模式会自动清除当前选择的内容。 默认情况下,用户可以选择用鼠标拖动,按Ctrl或Shift的同时选择延长或修改的选择,或者点击左上角的标题单元格来选择控件中的所有细胞的多个行,列或单元格。为了防止这种行为,设置为false Multi Select属性。 该Full Row Select和Row Header Select模式允许用户通过选择删除,再按DELETE键的行。用户可以删除行,只有在当前单元格不处于编辑模式,Allow User To Delete Rows属性设置为true,并且基础数据源支持用户驱动的行删除。请注意,这些设置不会防止纲领性行删除。 5.4.1编程选择 目前的选择模式限制了方案选择,以及用户的选择行为。你可以改变当前选择编程方式设置的任何单元格,行或列在Data Grid View控制选录的财产。您还可以选择通过Select All方法控制所有单元格,选择模式而定。要清除的选择,使用Clear Selection方法。 如果Multi Select属性设置为true,则可以添加或删除Data Grid View元素从选择通过改变这些元素的Selected属性。否则,设置一个元素的Selected属性为true自动删除从选择的其他因素。 注意:改变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.

Commit Edit メソッドを呼び出して、Commit 値を渡します。 セルの値を変更しても、コントロールの行は、自動的には並べ替えられません。ユーザーがセルに変更を加えたときにコントロールを並べ替えるには、Cell Value Changed イベント ハンドラで Sort メソッドを呼び出します。 イベント処理の詳細については、「イベントの利用」を参照してください。 Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition開発プラットフォームの中には、.

Displayed Cells; Auto Size Mode 设定为 Not Set 时, 默认继承的是 Data Grid View. Automatic的Sorted Column和Sort Order的性能Sort Mode属性值列通过自动设置和相应的排序标志符号出现在列标题。 注意:当Data Grid View控件绑定通过设置Data Source属性到外部数据源,的Sort(Data Grid View Column,List Sort Direction)方法重载不能用于未绑定列。此外,当Virtual Mode属性为true,则可以只绑定列调用此重载。要确定是否列是数据绑定,检查Is Data Bound属性值。在绑定模式下未绑定列排序不受支持。 5.6.2自定义排序 您可以通过使用自定义的Sort(IComparer)Sort方法重载或通过处理Data Grid View的Sort Compare事件。 的Sort(IComparer)方法重载采用一个实现类作为参数的IComparer接口的实例。此重载很有用,当您要提供自定义排序,例如,当在一列中的值没有自然排序顺序或者当自然排序顺序是不适当的。在这种情况下,您不能使用自动排序,但您可能仍然希望用户通过点击排序列标题。你还可以打电话为Column Header Mouse Click此重载事件处理程序,如果你不使用选择栏标题。 注意:的Sort(IComparer)方法重载仅当Data Grid View控件未绑定到外部数据源和Virtual Mode属性值为false。要自定义绑定到外部数据源的列排序,你必须使用排序的数据源提供的操作。在虚拟模式下,你必须为自己的未绑定列排序操作。 要使用的Sort(IComparer)方法重载,您必须创建自己的类实现IComparer接口。此接口要求您的类来实现IComparer. 如何使所有单元格总是显示控件(不论它是否处于编辑状态)? Data Grid View 控件只支持在单元格处于编辑状态时显示真实的控件(如Text Box)。Data Grid View 没有被设计为显示多控件或为每行重复显示控件。Data Grid View 在单元格不被编辑时为其绘制对应控件的外观,该外观可能是你想要的。例如,Data Grid View Button Cell 类型的单元格,不管它是否处于编辑状态,总是表现为一个按钮。 5.

All Cells); //让 Data Grid View1 的第一行的行高自动调整一下。 Data Grid View1. Display Member = "Stu Name"; ------------- 让Data Grid View的列宽自适应 就一行代码: Columns[i]. Get Formatted Value()控制。 默认情况下,Data Grid View使用Type Converter将单元格的值(Value)转换为格式化的值(Formatted Value)。Data Grid View会基于单元格的Value Type和Formatted Value Type属性来获取合时的Type Converter。 对于一个单元格,Formatted Value会得到多次请求(即会在多个地方用到):绘制单元格的时候,所在列根据单元格内容自动调整大小的时候,甚至是在判断鼠标是否经过单元格内容时。每次需要Formatted Value的时候,Data Grid View会触发Cell Formatting事件,这时你就有机会修改单元格的格式化显示了。 如果单元格不能获取它的格式化值,它会触发Data Error事件。 格式化显示单元格还包含以怎样的首选尺寸显示它。这个首选尺寸是由单元格的Formatted Value,填充区域(padding),附加显示和边框合并而成。 绘制单元格的显示(Painting the Display) 在获得Formatted Value 后,单元格将负责绘制它的内容。单元格决定了绘制过程所使用的正确样式(参见本文档第五章的样式部分)并进行绘制。记住:如果单元格不去绘制自己,那么该单元格将不会有任何内容得到绘制(即单元格的绘制只由它自己负责),行、列不会负责绘制任何内容,因此要确保至少要绘制单元格的背景(background),否则单元格所在的矩形区域仍然是无效的(即未经绘制)。 解析单元格的显示(Parsing the Display) 用户开始与单元格交互后,可能会编辑单元格的值。有一件事要记住,用户编辑的实际上是单元格的Formatted Value。用户提交所编辑的值时,Formatted Value需要转换回单元格的值(Value),这个过程称为解析(parsing)。在单元格级上,所有这些工作由单元格的Data Grid View Cell. ,所以,如果用户可以调整控制,例如,如果它是一个可调整大小的对接形式,他们也可以更改列的所有可用的展示空间。 Data Grid View控件提供的属性,方法和事件,使您可以自定义或禁用这些用户导向的所有行为。此外,您可以通过编程方式调整行,列和标题,以适合他们的内容,也可以将其配置为自动调整自己只要其内容的变化。 常见问题: 1)如何调整最后一列的宽度使其占据网格的剩余客户区? 5.3.1在Windows窗体Data Grid View控件调整大小选项 Data Grid View行,列和标题可以改变许多不同的事件结果的大小。下表显示了这些事件。 发生说明 用户调整大小用户可以通过拖动或双击行,列或标题分隔大小的调整。 控制调整在列填充模式,列宽度变化时,控制宽度的改变,例如,当控件停靠到其父形式和用户调整的表格。 细胞在基于内容的自动调整大小模式值的变化,大小变化,以适应新的显示值。 方法调用的方案内容为基础的大小可以让用户调整大小的基础上伺机在方法调用时单元格值。 属性设置也可以设置特定的高度和宽度值。 默认情况下,启用用户调整大小,自动调整大小被禁用,是更广泛的单元格值比列剪裁。 下表显示的情况,你可以用它来调整预设的行为,或使用特定的调整大小选项来达到特定的效果。 方案实施 使用列填充显示同样,在一列,占据了整个宽度的控制数量相对较少,而不显示水平滚动条大小的数据模式。 Auto Size Columns Mode属性设置为Fill。 使用列填充不同大小显示值模式。 Auto Size Columns Mode属性设置为Fill。初始化设置列的Fill Weight属性或调用控件Auto Resize Columns灌装后用数据控制方法相对列宽度。 使用列填充不同的重要性与价值模式。 Auto Size Columns Mode属性设置为Fill。设置大量列的Minimum Width值,必须始终显示的数据部分或使用一个尺寸的选择以外填补特定列模式。 使用列填充模式,以避免显示控件的背景。设置最后一列Auto Size Mode属性为Fill和使用其他尺寸的其他列选项。 显示一个固定宽度的列,如图标或ID列。 Auto Size Mode设置为None,可调整大小为False的列。初始化设置width属性,或者调用控件Auto Resize Column后用数据填?? ,关闭自动调整大小尺寸和使用方案。 6.4使用选定的单元格,行和列的集合高效 Selected Cells集合不执行效率大选择。收藏的Selected Rows和Selected Columns也可以是低效的,但在较小的程度,因为有许多比细胞中的行数少一个典型的Data Grid View控件,比列行少得多。为了避免性能下降与这些藏品时,请遵循下列准则: ? 避免细胞为基础的选择模式。相反,Selection Mode属性设置为Full Row Select或Full Column Select。 6.5使用共享行 实现有效的内存使用在通过共享行的Data Grid View控制。作为行会分享他们的外观和行为,尽可能通过Data Grid View Row类的共享实例的信息。 虽然共享行实例节省内存,很容易成为非共享行。例如,每当一个直接与用户交互的一个单元,它的行成为非共享。因为这是无法避免,在这个主题中的准则是有用的,只有当工作与数据量非常大,只有当用户将与每一个数据你的程序运行时间的一小部分。 阿行不能共享在未绑定的Data Grid View控制,如果它的任何单元格包含值。当Data Grid View控件绑定到外部数据源,或当您实现虚拟模式,并提供您自己的数据源,该单元格值存储以外的控制,而不是在单元格对象,允许行被共享。 行对象只能共享,如果它的所有细胞的状态可以从该行的状态和细胞列载的状态决定。如果您更改单元格的状态,这样它可以不再从它的行和列的状态推断,该行不能被共享。 例如,行不能共享在下列情形之一: ? 避免调用Add(Object []的)的添加方法和插入(对象[])的插入的行的集合方法重载超载。这些重载自动创建非共享行。 ?

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方法的返回值。请注意,但是,这种方法可能会导致行成为非共享。有关详细信息,请参阅下一节。 ?

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。这会导致所有行成为非共享选择。 ?

All Cells);上面调用的 Auto Resize Columns 和 Auto Resize Column 当指定的是Data Grid View Auto Size Column Mode. Auto Resize Rows(Data Grid View Auto Size Rows Mode. Get Value() 方法来控制。 默认情况下,单元格的值的类型为object。当一个列被绑定后,会设置它的Value Type属性,它包含的单元格的Value Type也随之更新。而单元格的Value Type对于下一步的格式化非常重要。 格式化显示(Formatting for Display) 注意:当Data Grid View需要了解“如何显示这个单元格”时,它需要的是单元格的Formatted Value ,而不是Value。这是一个复杂的过程,因为格式化屏幕上的一些内容通常需要将它转换为字符串。例如,尽管你将单元格的值(Value)设置为整型值155,在显示它的时候仍需要将其格式化。单元格和其所在的列的Formatted Value Type 属性决定了显示它时所用的类型。多数列使用字符串类型,而Image和Check Box类型的单元格/列则使用其它类型。Image类型的单元格和列使用Image作为默认的Formatted Value Type,它的内置实现了解如何去显示一个Image。Check Box类型的单元格/列的Formatted Value Type属性则取决于属性Three State的值。在单元格级,所有这些由Data Grid View Cell. Error Icon); 或者,也可以让自己和油漆的细胞中添加一个自定义事件处理程序的Data Grid View. Row Post Paint前景的内容。您还可以禁用油漆和涂料的一切细胞在Data Grid View. Row Pre Paint自己的事件处理程序 5.3 Autosizing Data Grid View控件提供了自定义的列和行的调整大小行为的许多选项。通常情况下,Data Grid View单元格不调整的基础上的内容。相反,她们还会给任何显示值比电池大。如果内容可以作为一个字符串显示,该单元格显示在工具提示。 默认情况下,用户可以用鼠标拖动来显示更多信息行,列和标题分隔。用户还可以双击一个分频器来自动调整相关的行,列或标题带其内容为基础。列共享默认情况下,控制可用宽度?? Row Headers Width Size Mode 您还可以防止大小设置其Resizable属性由单个行或列的用户。默认情况下,Resizable属性值是基于对列Allow User To Resize Columns属性值和属性值的行Allow User To Resize Rows。如果你明确地设置大小可调整为True或False,但是,指定的值控制值覆盖该行或列中。设置调整大小to Not Set恢复继承。 由于Not Set还原值继承,Resizable属性永远不会返回Not Set值,除非该行或列并没有被添加到一个Data Grid View控制。如果您需要确定是否行或列Resizable属性值继承,审查其国家的财产。如果该国值包括Resizable Set标志,Resizable属性值不继承。 5.3.3自动调整大小 有两种自动调整大小在Data Grid View控制类型:列填充模式和基于内容的自动调整大小。 列填充模式导致在控件中可见列,以填补该控件的显示区域的宽度。如需这个模式的详细信息,请参阅列填充模式一节。 您还可以配置行,列和标题的大小自动调整以适应其单元格内容。在这种情况下,大小调整单元格内容时发生变化。 注意:如果你保持在自定义数据缓存单元格的值使用虚拟模式,自动调整大小时发生用户编辑单元格值,但不会发生改变时,外面的一Cell Value Pushed事件处理缓存值。在这种情况下,调用Update Cell Value方法强制控制更新单元格的显示和应用当前的自动调整大小模式。 如果基于内容的自动调整大小仅用于也就是说,对于行,但不列,或列,但不是行和的Wrap Mode还启用一维启用,大小调整时,也会发生在其他方面的变化。例如,如果行,但不列自动调整大小和配置的Wrap Mode已启用,用户可以拖动列分隔来改变一个列和行高将自动调整使细胞内容仍然充分显示宽度。 如果配置基于内容的自动调整大小行和列和的Wrap Mode启用,Data Grid View控件将调整单元格内容改变大小时,将使用一个理想的细胞高度对宽度的比例,当计算新的大小。 要配置标题和行和列不会覆盖控制值,浆纱模式设置一个或多个以下的Data Grid View属性: ? 避免使用带有大量行集的Data Grid View控制自动调整大小。如果你使用自动大小调整,只调整的基础上所显示的行。在虚拟模式下只使用所显示的行以及。 对行和列? 对于行头,使用该Data Grid View Row Headers Width Size Mode枚举Auto Size To Displayed Headers或Auto Size To First Header领域。 为了获得最大的可扩展性? 该行包含其项目属性的Data Grid View Combo Box Cell集。 在绑定模式或虚拟模式,您可以通过处理Cell Tool Tip Text Needed提供Cell Context Menu Strip Needed事件和个别细胞工具提示和快捷菜单。 Data Grid View控件将自动尝试使用共享每当行添加到Data Grid View Row Collection行。使用下面的指引,以确保行共享: ? 避免索引中的行集或通过它迭代与foreach循环。你不会通常需要直接访问行。 Data Grid View的操作方法,对行,而不是采取行实例行索引参数。此外,对于行相关的事件处理程序接收行属性,您可以用它来操作,而不会造成他们成为非共享行的事件参数对象。 ? 避免细胞为基础的选择模式。这些模式导致行成为非共享。相反,将Selection Mode属性设置Data Grid View Selection Mode. 不要调用Are All Cells Selected(布尔)方法。这种方法可能会导致行成为非共享。 ? 不要调用Select All方法当Selection Mode属性值是Cell Select。这会导致所有行成为非共享。 ?

Leave a Reply