我一直在查看其他帖子并且在使用此帖子中的代码时已经找到了[循环访问datagridview列并勾选复选框] [1]
[1]:loop through datagridview column and check checkbox和其他人或我提出的代码
string cName;
int i;
foreach (DataGridViewColumn c in Results.Columns)
{
cName = c.DisplayIndex.ToString();
i = Int32.Parse(cName);
MessageBox.Show(c.HeaderText);
}
这不会循环显示。所以我所做的就是打开AllowUserToReorderColumns
,当他们移动一列时,我想循环显示列并显示一个消息框,其中包含新订单中显示列的名称。
正如你所知,我已找到displayIndex
预言但我无法弄清楚如何使用它。
答案 0 :(得分:2)
您的代码只是按照添加的顺序遍历列。它与列的显示顺序不同。
您需要按显示顺序对列进行排序。您可以使用Linq的OrderBy
方法和DisplayIndex
属性来执行此操作。您也可以选择过滤隐藏的列。
var columnsInDisplayOrder = Results.Columns
.Cast<DataGridViewColumn>()
.Where(x => x.Visible)
.OrderBy(x => x.DisplayIndex);
foreach (DataGridViewColumn c in columnsInDisplayOrder)
{
MessageBox.Show(c.HeaderText);
}