FriendClass DataGridNoActiveCellColumnClass DataGridNoActiveCellColumn Inherits System.Windows.Forms.DataGridTextBoxColumn '重载DataGridTextBoxColumn类的Edit方法,以便使点击DataGrid中任一单元格都选中当前行ProtectedOverloadsOverridesSub Edit()Sub Edit(ByVal [source] As CurrencyManager, ByVal rowNum AsInteger, ByVal bounds As Rectangle, ByVal [readOnly] AsBoolean, ByVal instantText AsString, ByVal cellIsVisible AsBoolean) Dim SelectedRow AsInteger= rowNum Me.DataGridTableStyle.DataGrid.Select(SelectedRow) End SubEnd Class
设置datagrid样式:
PrivateSub Button1_Click()Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click DimtabAsNew DataTable("mytab") For i As Int32 =0To1tab.Columns.Add(New DataColumn("A"& i, Type.GetType("System.Decimal"))) Nexttab.Columns(1).Expression ="Avg(a0)"Dim r As DataRow For i As Int32 =0To10 r =tab.NewRow r("A0") =5+ i tab.Rows.Add(r) NextMe.DataGrid1.DataSource =tabDim tabStyle AsNew DataGridTableStyle Dim rCell AsNew DataGridNoActiveCellColumn rCell.MappingName =tab.Columns(0).ColumnName rCell.HeaderText =tab.Columns(0).ColumnName tabStyle.GridColumnStyles.Add(rCell) rCell.MappingName =tab.Columns(1).ColumnName rCell.HeaderText =tab.Columns(1).ColumnName rCell.Width =100 tabStyle.GridColumnStyles.Add(rCell) tabStyle.MappingName =tab.TableName Me.DataGrid1.TableStyles.Add(tabStyle) End Sub