>>472
大体471の方法で出来るよ。
DataGridView用でC#でプロパティ名はうろ覚えでしかも走り書きだが
適当に読み換えて使え。


int Total = 0;

// とりあえずRowHeaderの幅を足しとく
Total += DGView.RowHeadersWidth;

  // 末尾を除くColumnにアクセスする
  for( int i = 0; i < DGView.Columns.Count - 1; i++ ){

  // Columnの幅を足していく。
  Total += DGView.Columns[ i ].Width;

  // Widthに含まれないボーダだかマージンだかの分。ないと微妙にズレる。
  // 場合によってはここで足す値をちゃんと取得する必要があるかもしれない。
  Total++;

  }

// DataGridの幅から末尾のColumnを除くHeader部分(Total)を引いた値を、
// 末尾のColumnの幅に設定する。
DGView.Columns[ DGView.Columns.Count - 1 ].Width
  = ( DGView.Width - Total );


これを実行する場面は、
DataGridのResizeと、ColumnWidthのResizeと、
RowHeaderのResizeと、後は必要なら起動時等の初期化の時。