DataGridViewColumn
objects have a Name
(shown only in the forms designer) and a HeaderText
(shown in the GUI at the top of the column) property. The indexer in your example uses the column's Name
property, so since you say that isn't working I assume you're really trying to use the column's header.
There isn't anything built in that does what you want, but it's easy enough to add. I'd use an extension method to make it easy to use:
public static class DataGridHelper
{
public static object GetCellValueFromColumnHeader(this DataGridViewCellCollection CellCollection, string HeaderText)
{
return CellCollection.Cast<DataGridViewCell>().First(c => c.OwningColumn.HeaderText == HeaderText).Value;
}
}
And then in your code:
foreach (DataGridViewRow row in Rows)
{
if (object.Equals(row.Cells.GetCellValueFromColumnHeader("xxx"), 123))
{
// ...
}
}