如何通过它的 HeaderText 属性获取 DataGridViewColumn?



如何通过标题文本而不是索引或名称属性获取数据网格视图的列?

到目前为止,我尝试的是我的直觉方法:

// Identifiers used are:
string myHeaderText = "Header Text";
dataGridViewColumn = dataGridView.Columns[myHeaderText];

但是这会返回

Object reference not set to an instance of an object.

正在返回

Object reference not set to an instance of an object.

因为

dataGridViewColumn = dataGridView.Columns[myHeaderText];

正在dataGridView中查找具有NameProperty=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 的扩展方法

最新更新