Я предлагаю задать ширину для всех столбцов сетки следующим образом:
DataGridViewTextBoxColumn col = new DataGridViewTextBoxColumn();
col.HeaderText = "phone"
col.Width = 120;
col.DataPropertyName = (if you use a datasource)
thegrid.Columns.Add(col);
и для основного (или самого длинного) столбца (скажем, адреса) сделайте следующее:
col = new DataGridViewTextBoxColumn();
col.HeaderText = "address";
col.Width = 120;
хитрая часть
col.MinimumWidth = 120;
col.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
хитрая часть
col.DataPropertyName = (same as above)
thegrid.Columns.Add(col);
Таким образом, если вы растянете форму (а сетка «заполнена доками» в его контейнере), основной столбец, в данном случае адресный столбец, займет все доступное пространство, но никогда не будет меньше столбца. MinimumWidth, так что это единственный, размер которого изменяется.
Я использую его, когда у меня есть сетка, и ее последний столбец используется для отображения изображения (например, детализации значка или удаления значка ...), и у него нет заголовка, и он всегда должен быть наименьшим.