У меня были те же проблемы, вот мое решение ... передача списка имен заголовков
public void dgv_SetHeaderNames(DataGridView dgv, List<string> colNames, bool withColNum = false)
{
foreach (DataGridViewColumn dgvCol in dgv.Columns)
{
int currCol = dgvCol.Index;
string colText = "";
if (currCol >= colNames.Count)
{
// if there are more columns than name we will use the column number, anyway.
colText = currCol.ToString();
}
else
{
if (withColNum == true)
{
colText = currCol.ToString() + " - " + colNames[currCol];
}
else
{
colText = colNames[currCol];
}
}
dgv.Columns[currCol].HeaderText = colText;
}
}
Единственная проблема, с которой я столкнулся, в VS2017, я получаю IDE0028 для моей инициализации.
Но, как вы можете видеть, я повторно использую список для нескольких DataGridViews в моем проекте ...
List<string> colNames = new List<string>();
colNames.Add("Desc");
colNames.Add("Freq");
colNames.Add("Date");
colNames.Add("Amount");
colNames.Add("Pay From");
dgv_SetHeaderNames(dgvDebits, colNames);
dgvDebits.ColumnCount = colNames.Count;
colNames[4] = "Type";
dgv_SetHeaderNames(dgvIncome, colNames);
dgvIncome.ColumnCount = colNames.Count;
colNames.Clear();
colNames.Add("Key");
colNames.Add("Description");
colNames.Add("Date");
colNames.Add("Freq");
colNames.Add("Amount");
colNames.Add("Pay From");
colNames.Add("USAA Checking");
colNames.Add("Amazon VISA");
dgv_SetHeaderNames(dgvWorking, colNames);
Мне кажется, я предпочитаю простоту VS2010!
Еще один приятныймаленькая хитрость, которую я узнал, это использование списка для заполнения заданной строки ...
dgvWorking.Rows.Add(wList.ToArray());
Я не нашел ни одного примера, чтобы сделать то же самое с заголовками ...