Datagridview动态生成 Dim ID As DataGridViewTextBoxColumn = New DataGridViewTextBoxColumn() Dim 名称As DataGridViewTextBoxColumn = New DataGridViewTextBoxColumn() Dim 初期表示As DataGridViewCheckBoxColumn = New DataGridViewCheckBoxColumn() Dim 拡大限界As DataGridViewTextBoxColumn = New DataGridViewTextBoxColumn() Dim 縮小限界As DataGridViewTextBoxColumn = New DataGridViewTextBoxColumn() Dim キーAs DataGridViewTextBoxColumn = New DataGridViewTextBoxColumn() Dim 見出しAs DataGridViewTextBoxColumn = New DataGridViewTextBoxColumn() Dim OpFlg As DataGridViewTextBoxColumn = New DataGridViewTextBoxColumn() Dim HideKey As DataGridViewTextBoxColumn = New DataGridViewTextBoxColumn() Dim 施設ID As DataGridViewTextBoxColumn = New DataGridViewTextBoxColumn() Dim 規制種類As DataGridViewComboBoxColumn = New DataGridViewComboBoxColumn() Dim 登録時縮尺As DataGridViewTextBoxColumn = New DataGridViewTextBoxColumn() Dim 表示限界縮尺As DataGridViewTextBoxColumn = New DataGridViewTextBoxColumn() Dim 廃止フラグAs DataGridViewComboBoxColumn = New DataGridViewComboBoxColumn() Dim 施設区分As DataGridViewComboBoxColumn = New DataGridViewComboBoxColumn() With dg_Master_Grid .RowCount = 0 ID.Name = "ID" ID.HeaderText = "ID" 名称.Name = "名称" 名称.HeaderText = "名称" 初期表示.Name = "初期表示" 初期表示.HeaderText = "初期表示" 拡大限界.Name = "拡大限界" 拡大限界.HeaderText = "拡大限界" 縮小限界.Name = "縮小限界" 縮小限界.HeaderText = "縮小限界" キー.Name = "キー" キー.HeaderText = "(非表示)キー" 見出し.Name = "見出し" 見出し.HeaderText = "見出し" OpFlg.Name = "OpFlg" OpFlg.HeaderText = "OpFlg" HideKey.Name = "HideKey" HideKey.HeaderText = "HideKey" 施設ID.Name = "施設ID" 施設ID.HeaderText = "施設ID" 規制種類.Name = "規制種類" 規制種類.HeaderText = "規制種類" 登録時縮尺.Name = "登録時縮尺" 登録時縮尺.HeaderText = "登録時縮尺" 表示限界縮尺.Name = "表示限界縮尺" 表示限界縮尺.HeaderText = "表示限界縮尺" 廃止フラグ.Name = "廃止フラグ" 廃止フラグ.HeaderText = "廃止フラグ" 施設区分.Name = "施設区分" 施設区分.HeaderText = "施設区分" .Columns.Add(ID) .Columns.Add(名称) .Columns.Add(初期表示) .Columns.Add(拡大限界) .Columns.Add(縮小限界) .Columns.Add(キー) .Columns.Add(見出し) .Columns.Add(施設ID) .Columns.Add(規制種類) .Columns.Add(登録時縮尺) .Columns.Add(表示限界縮尺) .Columns.Add(廃止フラグ) .Columns.Add(施設区分) .Columns.Add(OpFlg) .Columns.Add(HideKey) ID.SortMode = DataGridViewColumnSortMode.NotSortable 名称.SortMode = DataGridViewColumnSortMode.NotSortable 初期表示.SortMode = DataGridViewColumnSortMode.NotSortable 拡大限界.SortMode = DataGridViewColumnSortMode.NotSortable 縮小限界.SortMode = DataGridViewColumnSortMode.NotSortable キー.SortMode = DataGridViewColumnSortMode.NotSortable 見出し.SortMode = DataGridViewColumnSortMode.NotSortable OpFlg.SortMode = DataGridViewColumnSortMode.NotSortable HideKey.SortMode = DataGridViewColumnSortMode.NotSortable 施設ID.SortMode = DataGridViewColumnSortMode.NotSortable 規制種類.SortMode = DataGridViewColumnSortMode.NotSortable 登録時縮尺.SortMode = DataGridViewColumnSortMode.NotSortable 表示限界縮尺.SortMode = DataGridViewColumnSortMode.NotSortable 廃止フラグ.SortMode = DataGridViewColumnSortMode.NotSortable 施設区分.SortMode = DataGridViewColumnSortMode.NotSortable ID.MaxInputLength = 5 .Columns("キー").Visible = False .Columns("OpFlg").Visible = False .Columns("HideKey").Visible = False .Columns("ID").Width = 50 .Columns("名称").Width = 200 .Columns("初期表示").Width = 70 .Columns("拡大限界").Width = 80 .Columns("縮小限界").Width = 80 .Columns("見出し").Width = 220 .Columns("表示限界縮尺").Width = 110 .Columns("ID").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight .Columns("拡大限界").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight .Columns("縮小限界").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight .Columns("施設ID").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight .Columns("登録時縮尺").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight .Columns("表示限界縮尺").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight .Columns("ID").ReadOnly = True .Columns("ID").DefaultCellStyle.BackColor = Color.Cyan .Columns("ID").DefaultCellStyle.SelectionBackColor = Color.Cyan 字符串长度判断 System.Text.Encoding.Default.GetByteCount(.Rows(intRow).Cells("名称").Value.ToString) 屏蔽右键 dgvMaster_CellEnter事件中: sender.ContextMenu = New ContextMenu 单元格只读 dgvMaster.Rows(iCurrCells).Cells(IntCol).ReadOnly = True 输入法 dgvMaster.ImeMode = Windows.Forms.ImeMode.Hiragana 列名 dgvMaster.Columns(e.ColumnIndex).HeaderText 字体颜色 .Rows(iCurrCells).Cells(IntCol).Style.ForeColor = Color.Red 删除 .Rows.RemoveAt(.CurrentRow.Index) 选中 .Rows(lNextFocusRowIndex).Cells("ID").Selected = True Private Sub fg_EditingControlShowing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles fg.EditingControlShowing If fg.CurrentCell.ColumnIndex = 1 Then e.Control.ImeMode = Windows.Forms.ImeMode.Disable e.Control.RightToLeft = Windows.Forms.RightToLeft.Yes Else e.Control.ImeMode = Windows.Forms.ImeMode.On e.Control.RightToLeft = Windows.Forms.RightToLeft.No End If AddHandler e.Control.KeyPress, AddressOf fg_KeyPress End Sub Tab键按下不进入单元格 Private Sub fg_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles fg.KeyDown If e.KeyCode = Keys.Tab Then e.SuppressKeyPress = True cmdUpdate.Focus() End If datagridview增加一行,可以在增加的同时赋值 dg_Master_Grid.Rows.Add(NzSet(dtRow("ANK").ToString, 0), _ NzSet(dtRow("NAM").ToString, ""), _ NzSet(dtRow("PAR01").ToString, ""), _ NzSet(dtRow("PAR02").ToString, ""), _ NzSet(dtRow("DSP_SEQ").ToString, 0), _ IIf(dtRow("DEL_FLG").ToString = "0", False, True)) 也可以先增加,再赋值 dg_Master_Grid.Rows.Add(MaxID, "") 增加/删除事件 Dim WithEvents EditControl As DataGridViewTextBoxEditingControl Private Sub dgvMaster_EditingControlShowing(ByVal sender As System.Object _ , ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) _ Handles dgvMaster.EditingControlShowing Try With dgvMaster Select Case .Columns(.CurrentCell.ColumnIndex).Name Case "番号" EditControl = CType(e.Control, DataGridViewTextBoxEditingControl) EditControl.MaxLength = 12 AddHandler EditControl.KeyDown, AddressOf EditControl_KeyDown RemoveHandler EditControl.TextChanged, AddressOf EditControl_TextChanged Case "表示順" EditControl = CType(e.Control, DataGridViewTextBoxEditingControl) EditControl.MaxLength = 2 EditControl.ImeMode = Windows.Forms.ImeMode.Disable AddHandler EditControl.KeyDown, AddressOf EditControl_KeyDown RemoveHandler EditControl.TextChanged, AddressOf EditControl_TextChanged End Select Select Case .Columns(.CurrentCell.ColumnIndex).Name Case "表示順" AddHandler EditControl.KeyPress, AddressOf Cells_KeyPress Case Else RemoveHandler EditControl.KeyPress, AddressOf Cells_KeyPress End Select End With Catch ex As Exception End Try End Sub