Уважаемые форумчане!
Подскажите пожалуйста как запретить передачу фокуса на ячейки определенного столбца в DataGridView?
Public Class Form1
Dim dGrid As New MoiClass
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Me.Width = 800
Me.Height = 600
Me.Controls.Add(dGrid)
dGrid.AutoSize = True
dGrid.ReadOnly = True
dGrid.MultiSelect = False 'надо что бы выделялась только одна ячейка
dGrid.RowHeadersVisible = False
dGrid.ColumnHeadersVisible = False
dGrid.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells
dGrid.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells
dGrid.Left = 0
dGrid.Top = 0
dGrid.RowCount = 5
dGrid.ColumnCount = 10
dGrid.Item(1, 0).Selected = True 'что бы сразу не попадать в нулевую ячейку
End Sub
End Class
Public Class MoiClass
Inherits System.Windows.Forms.DataGridView
Dim column As Short, row As Short 'для индексов предыдущей ячейки
Dim n As Short 'номер колонки которую нельзя выделить (с нуля)
Public Sub New()
Me.SetStyle(ControlStyles.OptimizedDoubleBuffer, True)
Me.SetStyle(ControlStyles.AllPaintingInWmPaint, True)
Me.SetStyle(ControlStyles.UserPaint, True)
End Sub
Private Sub MoiClass_CellLeave(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles Me.CellLeave
If e.ColumnIndex <> n Then
column = e.ColumnIndex
row = e.RowIndex
End If
End Sub
Private Sub MoiClass_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.SelectionChanged
If Me.CurrentCell.ColumnIndex = n And column <> n Then
Me.SetCurrentCellAddressCore(column, row, False, False, False)
Me.Item(column, row).Selected = True
End If
End Sub
End Class
Сейчас этот форум просматривают: Mail.ru [бот] и гости: 94