我一直在查看其他帖子,并在使用此帖子中的代码[通过datagridview列和检查复选框] [1]
弄清楚了[1]:通过DataGridView列循环,然后检查复选框和其他我提出的代码
string cName;
int i;
foreach (DataGridViewColumn c in Results.Columns)
{
cName = c.DisplayIndex.ToString();
i = Int32.Parse(cName);
MessageBox.Show(c.HeaderText);
}
这不会循环通过显示。因此,我所做的就是打开AllowUserToReorderColumns
,当他们移动列时,我想循环遍历显示列,并在新顺序中显示带有显示列的名称的消息框。
您可以说我已经找到了displayIndex
伪造,但我不知道如何使用它。
您的代码只需按照列的顺序循环。它不会与列显示的顺序相同。
您需要按显示顺序对列进行排序。您可以使用 DisplayIndex
属性的LINQ的OrderBy
方法来进行。您还可以选择过滤隐藏的列。
var columnsInDisplayOrder = Results.Columns
.Cast<DataGridViewColumn>()
.Where(x => x.Visible)
.OrderBy(x => x.DisplayIndex);
foreach (DataGridViewColumn c in columnsInDisplayOrder)
{
MessageBox.Show(c.HeaderText);
}