Я ломал голову над той же проблемой (более или менее), и я не мог понять это.
Я убедился, что установлены следующие свойства
AllowUserToResizeColumns = True
AutoSizeColumnsMode = None
Затем в моем коде я установил следующее после заполнения сетки данными:
dataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells)
ОП вместо этого будет использовать:
dataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.ColumnHeader)
Это должно было быть сделано, поэтому вы автоматически изменяете размер столбцов один раз, но в противном случае AutoSizeColumnsMode устанавливается на None, поэтому у пользователя все еще есть контроль.
... Моя проблема заключалась в том, что я забыл, что сами столбцы имеют свойства, которые также необходимо учитывать. Я установил для большинства столбцов:
AutoSizeMode = AllCells
которая была источником моей проблемы ... поэтому я установил их на
AutoSizeMode = NotSet
и все так, как и должно быть.