如何通过标题文本而不是索引或名称属性获取数据网格视图的列?
到目前为止,我尝试的是我的直观方法:
// Identifiers used are:
string myHeaderText = "Header Text";
dataGridViewColumn = dataGridView.Columns[myHeaderText];
但是这会返回
Object reference not set to an instance of an object.
如何通过标题文本而不是索引或名称属性获取数据网格视图的列?
到目前为止,我尝试的是我的直观方法:
// 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 中查找具有Name Property = 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 创建一个扩展方法