1

DataGridViewコードを使用して (Winforms) にデータを入力し、 から行を入札していますDataTable。また、列を並べ替えるためのプロパティが true に設定されています。
列を並べ替えて、列の新しい順序を取得したい場合、順序は常に同じです。これは、最初の列に名前が付けられ"ID"、最後の列に名前が付けられている場合、の代わりに移動し、次"Price"のコードを使用して列を一覧表示する場合を意味します。IDPricePriceID

            for (int i = 0; i <= dgAnalyse.Columns.Count - 1; i++)
            {
                if (dgAnalyse.Columns[i].Visible == true)
                {
                    Console.WriteLine(dgAnalyse.Columns[i].HeaderText);
                }
            }

取得します: ID、価格ではなく価格、ID。

列の新しい順序のリストを取得することは可能ですか?

4

3 に答える 3

1

列を並べ替えて、列の新しい順序を取得したい場合、順序は常に同じです。

DataGridView.AllowUserToOrderColumns機能を使用して実行時に列の順序を変更しても 、コレクションの順序は変更されませんDataGridView.ColumnsDisplayIndex列のプロパティだけが変更されます。

表示順で列を反復処理する場合は、次を使用できますLink

C#

var q = from c in this.DataGridView1.Columns.Cast<DataGridViewColumn>()orderby c.DisplayIndex select c;
foreach (DataGridViewColumn column in q) 
{
    if (column.Visible == true) 
    {
    Console.WriteLine(column.HeaderText.ToString());
    }
}

VB.Net

Dim q = From c In Me.DataGridView1.Columns.Cast(Of DataGridViewColumn)() Order By c.DisplayIndex Select c
For Each column In q
        If column.Visible Then
            Console.WriteLine(column.HeaderText.ToString())
        End If
Next
于 2013-08-07T13:21:58.020 に答える
0

DisplayIndex特定のケースでプロパティを使用する方法を誤解していると思います。これを試してください

for (int i = 0; i <= dgAnalyse.Columns.Count - 1; i++)
            {
                if (dgAnalyse.Columns[i].Visible == true)
                {
                    Console.WriteLine(dgAnalyse.Columns[dgAnalyse.Columns[i].DisplayIndex].HeaderText);
                }
            }
于 2013-08-07T12:44:39.020 に答える