CurrencyManager cm = (CurrencyManager)BindingContext[dgvCalendar.DataSource];
cm.SuspendBinding();
dgvCalendar.SuspendLayout();
DateTime startDate = new DateTime(dtp.Value.Year, dtp.Value.Month, 1);//первое число месяца
DateTime endDate = startDate.AddMonths(1).AddDays(-1);
int start = startDate.Day - 1;
int end = endDate.Day;
int indexOfUntranslated = dtCalendar.Columns["untranslated"].Ordinal;
int columnCount = dtCalendar.Columns.Count;
columnCount = columnCount - (12 - dtp.Value.Month) - 1;
for (int j = indexOfUntranslated + 1; j < columnCount; j += 4)
{
dgvCalendar.Columns[j].HeaderText = "План";
dgvCalendar.Columns[j + 3].HeaderText = "Факт";
dgvCalendar.Columns[j + 1].Visible = false;//balance
dgvCalendar.Columns[j + 2].Visible = false;//saleSum
}
dgvCalendar.ResumeLayout(false);
dgvCalendar.PerformLayout();
cm.ResumeBinding();