b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

datagridview重叠_datagridview绑定list_datagridview右键菜单(42)

电脑杂谈  发布时间:2017-05-30 08:07:57  来源:网络整理

6.5使用共享行

实现有效的内存使用在通过共享行的DataGridView控制。作为行会分享他们的外观和行为,尽可能通过DataGridViewRow类的共享实例的信息。

虽然共享行实例节省内存,很容易成为非共享行。例如,每当一个直接与用户交互的一个单元,它的行成为非共享。因为这是无法避免,在这个主题中的准则是有用的,只有当工作与数据量非常大,只有当用户将与每一个数据你的程序运行时间的一小部分。

阿行不能共享在未绑定的DataGridView控制,如果它的任何单元包含。当DataGridView控件绑定到外部数据源,或当您实现虚拟模式,并提供您自己的数据源,该单元存储以外的控制,而不是在单元对象,允许行被共享。

行对象只能共享,如果它的所有细胞的状态可以从该行的状态和细胞列载的状态决定。如果您更改单元的状态,这样它可以不再从它的行和列的状态推断,该行不能被共享。

例如,行不能共享在下列情形之一:

?该行包含一个选定的单元是不是在选定的列。

?该行包含一个与它的ToolTipText或ContextMenuStrip属性设置单元。

?该行包含其项目属性的DataGridViewComboBoxCell集。

在绑定模式或虚拟模式,您可以通过处理CellToolTipTextNeeded提供CellContextMenuStripNeeded事件和个别细胞工具提示和快捷菜单。

DataGridView控件将自动尝试使用共享每当行添加到DataGridViewRowCollection行。使用下面的指引,以确保行共享:

?避免调用Add(Object []的)的添加方法和插入(对象[])的插入的行的集合方法重载超载。这些重载自动创建非共享行。

?确保在RowTemplate属性指定的行可以在下列情况下,共享:

?当调用add()或Add方法添加或插入(智力,智力)的行的集合插入方法重载(智力)重载。

?当增加RowCount属性的。

?当设置DataSource属性。

?确保该行的indexSource参数指定当呼叫可以共享的行集合AddCopy,AddCopies,InsertCopy和InsertCopies方法。

?请确定指定的行或列时,可以共享调用Add(的DataGridViewRow)Add方法的重载,AddRange方法,插入(Int32的,的DataGridViewRow)方法重载的插入,和Rows集合InsertRange方法。

要确定行是否是共享的,使用DataGridViewRowCollection.SharedRow(int)方法来检索行对象,然后检查对象的Index属性。共享行总是为-1 Index属性。

6.6防止行成为非共享

共享成为非共享行可以作为一个代码或用户操作的结果。为了避免影响性能,你应该避免造成行成为非共享。在应用开发,你可以处理RowUnshared事件来确定行成为非共享。这是非常有用的调试行共享问题。

为了防止行成为非共享,请使用下列准则:

?避免索引中的行集或通过它迭代与foreach循环。你不会通常需要直接访问行。 DataGridView的操作方法,对行,而不是采取行实例行索引参数。此外,对于行相关的事件处理程序接收行属性,您可以用它来操作,而不会造成他们成为非共享行的事件参数对象。

?如果您需要访问的行对象,请使用DataGridViewRowCollection.SharedRow(int)方法并传入行的实际索引。请注意,但是,修改一个共享行对象通过此方法检索将修改所有行共享此对象。在新记录行不共享,所以这是不会受到影响,当您修改任何其他行中的其他行。还要注意的是一个共享行代表不同的行可能有不同的快捷菜单。以检索共享行实例的正确快捷菜单中,使用GetContextMenuStrip方法并传入行的实际索引。如果您访问共享行的ContextMenuStrip属性,而是将使用-1共享行的索引,将不检索正确的快捷菜单。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-50070-42.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...