更新:2007 年 11 月
Visual Basic 6.0 中的 DataGrid 控件在 Visual Basic 2008 中由 Windows 窗体 DataGridView 控件所取代。某些属性、方法、事件和常量的名称是不同的,在某些情况下,行为也有所不同。
概念差异
数据绑定
因为所有操作都通过数据源来执行,所以 Visual Basic 2008DataGridView 控件不需要数据特定的方法或事件。由于这种表示和数据功能的分离,无论是否存在用户界面输入,都可以更改数据源。另外,绑定到同一个数据源的多个控件将始终保持同步。
导航
不再需要用于在 DataGrid 控件中查看和导航的属性(例如 TabAction、EnterAction、AllowArrows、WrapCellPointer 和 Scrollable)。例如,网格表现出的行为好像是 Scrollable 属性设置为 True:如果存在较多的数据,无法同时显示,滚动条将自动出现。默认情况下,将在网格中进行 Excel 样式的导航,用户可以使用 Tab 键前移,使用 Shift+Tab 组合键后移。有关更多信息,请参见 Windows 窗体 DataGridView 控件中的默认键盘和鼠标处理。
Caption 属性
在 Visual Basic 6.0 中,Caption 属性用来在网格上方显示标题栏;如果将 Caption 属性留空,则不显示标题栏。
Visual Basic 2008DataGridView 控件不支持标题栏。但是您可以使用 Label 控件达到相同的效果。
数据格式化
在 Visual Basic 6.0 中,使用 DataFormat 属性和 StdDataFormat 对象处理 DataGrid 控件中的格式化数据。格式设置是逐列应用的。
在 Visual Basic 2008DataGridView 控件中,格式化是使用 DataGridViewCellStyle 对象的 Format 属性来完成的。格式化可应用于各单元格、列或行。有关更多信息,请参见 Windows 窗体 DataGridView 控件中的数据格式设置。
hWndEditor 属性
在 Visual Basic 6.0 中,hWndEditor 属性用来将分配给 DataGrid 控件的编辑窗口的窗口句柄传递给 Windows API 调用。
Visual Basic 2008DataGridView 控件处于编辑模式时没有单独的窗口句柄;改为使用 DataGridView 控件或任何嵌入式编辑控件的 Handle 属性。
MarqueeStyle 属性
在 Visual Basic 6.0 中,MarqueeStyle 属性通过更改边框样式、反转前景色和背景色或调用编辑窗口来控制选择的单元格或行的外观。
没有 Visual Basic 2008DataGridView 控件的直接等效项。但是可以通过组合 SelectionMode、CellBorderStyle 和 Format 属性达到相同的效果。有关更多信息,请参见 Windows 窗体 DataGridView 控件中的选择模式。
SelLength、SelStart 和 SelText 属性
在 Visual Basic 6.0 DataGrid 控件中,当单元格进入编辑模式时,SelLength、SelStart 和 SelText 属性可以用于设置插入符号的初始位置或在单元格中突出显示文本的某一部分。
在 Visual Basic 2008DataGridView 控件中,不再存在这些属性。DataGridView 控件中的单元格以 TextBox 控件为基础;通过向 EditingControlShowing 事件处理程序添加代码,您可以访问基础控件的 SelectionLength、SelectionStart 和 SelectedText 属性。
拆分视图
Visual Basic 6.0 DataGrid 控件支持拆分视图,因此用户可以并行显示相同的数据。Split 对象以及 Split、Splits 和 TabAcrossSplits 属性控制着显示拆分视图的能力。
在 Visual Basic 2008DataGridView 控件中,不再存在这些属性。但是可以使用一个或多个 SplitContainer 控件和多个 DataGridView 控件来达到相同的效果。若要复制 TabAcrossSplits 属性的功能,可以使用 DataGridView 控件的 StandardTab 属性。
DataGrid 控件的代码更改
下面的代码通过如下方式说明 Visual Basic 6.0 和 Visual Basic 2008 之间的差异:演示当用户在 DataGridView 控件中选择一个单元格时,每个版本如何突出显示该单元格的文本。
' Visual Basic 6.0
Private Sub DataGrid1_Click()
DataGrid1.SelStart = 1
DataGrid1.SelLength = DataGrid1.Text
MsgBox("The selected text is " & DataGrid1.SelText)
End Sub
' Visual Basic
Private Sub DataGridView1_EditingControlShowing( _
ByVal sender As Object, ByVal e As System.Windows.Forms. _
DataGridViewEditingControlShowingEventArgs) _
Handles DataGridView1.EditingControlShowing
CType(e.Control, TextBox).SelectionStart = 0
CType(e.Control, TextBox).SelectionLength = Len(CType(e.Control, _
TextBox).Text)
MsgBox("The selected text is " & CType(e.Control, _
TextBox).SelectedText)
End Sub
DataGrid 控件的属性、方法和事件等效项
下表列出了 Visual Basic 6.0 属性、方法和事件,以及它们的 Visual Basic 2008 等效项。具有相同的名称和行为的属性、方法和事件未予列出。除非另有说明,否则所有的 Visual Basic 2008 枚举都映射到 System.Windows.Forms 命名空间。
此表提供相关主题的链接,这些主题对行为之间的差异进行说明。如果 Visual Basic 2008 中没有直接等效项,则提供指向介绍其他替代项的主题的链接。
属性
Visual Basic 6.0 |
Visual Basic 2005 等效项 |
||
---|---|---|---|
AddNewMode |
新的实现。数据操作在数据源中处理。有关更多信息,请参见 在 Windows 窗体 DataGridView 控件中显示数据。 |
||
Align |
|||
AllowAddNew |
AllowNew (BindingSource) |
||
AllowArrows |
不再是可调节的属性:始终允许使用箭头键进行导航。有关更多信息,请参见 Windows 窗体 DataGridView 控件中的默认键盘和鼠标处理。 |
||
AllowDelete |
AllowRemove (BindingSource) |
||
AllowRowSizing |
|||
AllowUpdate |
AllowEdit (BindingSource) |
||
Appearance |
新的实现。有关更多信息,请参见 Appearance 和 BorderStyle 属性(针对 Visual Basic 6.0 用户)。 |
||
ApproxCount |
新的实现。数据操作在数据源中处理。有关更多信息,请参见 在 Windows 窗体 DataGridView 控件中显示数据。 |
||
BackColor |
|
||
Bookmark |
新的实现。您现在可以直接访问任意项。 |
||
Caption |
新的实现。使用 Label 控件来模拟标题栏。 |
||
Col |
|||
ColumnHeaders |
|||
Container |
Parent;继承自 Control。 |
||
CurrentCellModified |
|||
CurrentCellVisible |
|
||
DataChanged |
|||
DataFormats |
|
||
DefColWidth |
WidthDataGridViewColumn 对象。 |
||
DragIcon DragMode |
新的实现。有关更多信息,请参见拖放(针对 Visual Basic 6.0 用户)。 |
||
EditActive |
|||
FirstRow |
|||
Font FontBold FontItalic FontName FontSize FontStrikethrough FontUnderline |
|
||
ForeColor |
|
||
HeadFont |
|
||
HeadLines |
无直接等效项。将 DataGridViewCellStyle 对象的 WrapMode 属性和 ColumnHeadersHeight 组合使用。 |
||
Height |
Height,继承自 Control 类。
|
||
HelpContextID |
新的实现。有关更多信息,请参见帮助支持(针对 Visual Basic 6.0 用户)。 |
||
hWnd |
|||
hWndEditor |
新的实现。使用 Handle。 |
||
Index |
新的实现。有关更多信息,请参见控件数组(针对 Visual Basic 6.0 用户)。 |
||
Left |
Left,继承自 Control 类。
|
||
LeftCol |
|||
MarqueeStyle |
无直接等效项。使用 SelectionMode、CellBorderStyle 和 Format 属性。 |
||
RecordSelectors |
|||
Row |
|||
RowDividerStyle |
GridColor、CellBorderStyle、RowHeadersBorderStyle 和 ColumnHeadersBorderStyle 属性。 |
||
RowHeight |
|||
SelBookmarks |
新的实现。您现在可以直接访问任意项。 |
||
SelEndCol SelStartCol |
|||
SelLength |
无直接等效项。在 EditingControlShowing 事件处理程序中使用 SelectionLength 属性。 |
||
SelStart |
无直接等效项。在 EditingControlShowing 事件处理程序中使用 SelectionStart 属性。 |
||
SelText |
无直接等效项。在 EditingControlShowing 事件处理程序中使用 SelectedText 属性。 |
||
Split Splits TabAcrossSplits |
新的实现。不直接支持拆分视图;需使用 SplitContainer 控件。 |
||
TabAction |
|||
Tag |
新的实现。 |
||
Text |
CurrentCell.Value
|
||
ToolTipText |
ToolTip 组件 有关更多信息,请参见工具提示支持(针对 Visual Basic 6.0 用户)。 |
||
Top |
|
||
VisibleCols |
DisplayedColumnCount 方法。
|
||
VisibleRows |
DisplayedRowCount 方法。
|
||
WhatsThisHelpID |
新的实现。有关更多信息,请参见帮助支持(针对 Visual Basic 6.0 用户)。 |
||
Width |
Width,继承自 Control 类。
|
||
WrapCellPointer |
不再是可调节的属性;默认行为是 WrapCellPointer = True。 |
方法
Visual Basic 6.0 |
Visual Basic 2005 等效项 |
||
---|---|---|---|
CaptureImage |
新的实现。不支持将 DataGridView 控件的内容捕获给 PictureBox 控件。 |
||
ClearFields |
新的实现。重新绑定时将自动设置列格式。 |
||
ClearSelCols |
|||
ColContaining |
IndexOf (DataGridViewColumnCollection) |
||
Drag |
新的实现。有关更多信息,请参见拖放(针对 Visual Basic 6.0 用户)。 |
||
GetBookmark |
新的实现。不再支持书签。 |
||
HoldFields |
新的实现。重新绑定时保留列的格式设置。 |
||
Move |
SetBounds,继承自 Control 类。
|
||
Rebind |
ResetBindings,继承自 Control 类。 |
||
RowBookmark |
新的实现。不再支持书签。 |
||
RowContaining |
IndexOf (DataGridViewColumnCollection) |
||
RowTop |
GetContentBounds (DataGridViewCell) |
||
Scroll |
新的实现方法。使用 CurrentCell 属性。 |
||
SetFocus |
|||
ShowWhatsThis |
新的实现。有关更多信息,请参见帮助支持(针对 Visual Basic 6.0 用户)。 |
||
SplitContaining |
新的实现。不直接支持拆分视图;需使用 SplitContainer 控件。 |
||
ZOrder |
BringToFront() 或 SendToBack() 函数 |
事件
Visual Basic 6.0 |
Visual Basic 2005 等效项 |
||
---|---|---|---|
AfterColEdit |
|||
AfterColUpdate AfterDelete |
新的实现。数据操作在数据源中处理。有关更多信息,请参见 在 Windows 窗体 DataGridView 控件中显示数据。 |
||
AfterUpdate |
|||
BeforeColEdit |
|||
BeforeColUpdate BeforeDelete BeforeInsert BeforeUpdate |
新的实现。数据操作在数据源中处理。有关更多信息,请参见 在 Windows 窗体 DataGridView 控件中显示数据。 |
||
ButtonClick |
Click(Button 控件) |
||
Change |
|
||
Click |
|||
ColEdit |
|||
ColResize |
|||
DblClick |
|||
DragDrop DragOver |
新的实现。有关更多信息,请参见拖放(针对 Visual Basic 6.0 用户)。 |
||
Error |
|||
HeadClick |
|||
MouseDown |
|||
MouseMove |
|||
MouseUp |
|||
OLECompleteDrag OLEDragDrop OLEDragOver OLEGiveFeedback OLESetData OLEStartDrag |
新的实现。有关更多信息,请参见拖放(针对 Visual Basic 6.0 用户)。 |
||
OnAddNew |
|||
RowColChange |
|||
RowResize |
|||
SelChange |
|||
SplitChange |
新的实现。不直接支持拆分视图;需使用 SplitContainer 控件。 |
||
Validate |
升级说明
当 Visual Basic 6.0 项目升级到 Visual Basic 2008 时,DataGrid 控件的 Change 事件将映射到 Visual Basic 2008DataGridView 控件的 TextChanged 事件。TextChanged 事件的行为不同于 Change 事件的行为,此差异可能会在代码中导致意外的结果。
任何与特定于数据的方法和事件相关的代码不会升级。代码中会添加警告注释,在编译应用程序前必须移除或修改这些代码。
请参见
概念
DataGridView 控件技术摘要(Windows 窗体)
对 .NET Framework 2.0 的 Windows 窗体的改进