DataGridView control has a property named ReadOnly that determins if the data in the cell can be changed. The ReadOnly property can be set not only for particular cells but also for entire rows and column. You can achieve this behavior by setting the DataGridViewRow.ReadOnly or DataGridViewColumn.ReadOnly properties.
By default, if a cell's parent row or column is set to read-only, the child cells will adopt the same value.
When the read-only is set to true, users can navigate to the cell, but the content cannot be changed. Please consider that the property doesn't affect changing the cell's value through the code and it doesn't prevent deleting rows.