Неважно, откуда берутся данные, которые вы используете для заполнения DataGridView
(зачем это нужно?).
Используйте свойство ReadOnly
DataGridViewColumn
, чтобы установить его только для чтения:
yourDataGridView.Columns("the_column_name").ReadOnly = True
Примечание. Если вы используете привязку данных (то есть свойство DataSource
), вам придется подождать, пока не сработает DataBindingComplete
, прежде чем вы сможете изменить столбцы.
Вот короткий, бегущий пример:
Dim con = new SqlConnection("Server=localhost;Database=master;User Id=sa;Password=whatever;")
Dim sqlCmd = new SqlCommand()
With sqlCmd
.Connection = con
.CommandType = CommandType.Text
.CommandText = "Select * from spt_monitor"
End With
Dim sqlDataAdap = new SqlDataAdapter(sqlCmd)
Dim dtRecord = new DataTable()
sqlDataAdap.Fill(dtRecord)
Dim dgv = new System.Windows.Forms.DataGridView()
With dgv
.DataSource = dtRecord
.Dock = System.Windows.Forms.DockStyle.Fill
End With
AddHandler dgv.DataBindingComplete, Sub(sender, e)
'' access the columns in the DataBindingComplete event
dgv.Columns("connections").ReadOnly = True
dgv.Columns(2).ReadOnly = True
End Sub
Dim f = new System.Windows.Forms.Form()
f.Controls.Add(dgv)
f.ShowDialog()