Как получить DataGridViewColumn по свойству HeaderText?
Как получить столбец представления таблицы данных по тексту заголовка, а не по свойству index или name?
До сих пор я пробовал мой интуитивный подход:
// Identifiers used are:
string myHeaderText = "Header Text";
dataGridViewColumn = dataGridView.Columns[myHeaderText];
Однако это возвращает
Object reference not set to an instance of an object.
1 ответ
Решение
Возвращается
Object reference not set to an instance of an object.
так как
dataGridViewColumn = dataGridView.Columns[myHeaderText];
ищет столбец в dataGridView со свойством Name = myHeaderText, а не свойством HeaderText. Чтобы обойти это, вы можете попробовать следующее:
namespace Extensions
{
// Class for: DataGridView Extensions
public static class DataGridViewExtension
{
// Method for: Getting the DataGridViewColumn by the header text
public static DataGridViewColumn IndexByHeaderText(this DataGridView dataGridView,
string headerText)
{
// Identifiers used are:
DataGridViewColumn dataGridViewColumn = new DataGridViewColumn();
int columnIndex;
// Get the index (using LinearSearch, at worst O(n), could sort for better)
foreach (DataGridViewColumn column in dataGridView.Columns)
{
// Check if the header text is found
if (column.HeaderText == headerText)
{
columnIndex = column.Index;
return dataGridView.Columns[columnIndex];
}
}
// Return if not found
return dataGridViewColumn;
}
}
}
это создает метод расширения для DataGridView