1

私はここで次のようなヒントに従いました:

datagridview1.Rows[0].HeaderCell.Value = "ur text";

これの助けを借りて、私はメソッドを設定しました:

private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e, DataSet src)
{
    for (int i = 0; i < dataGridView1.Rows.Count; i++)
    {
        dataGridView1.Rows[i].HeaderCell.Value = row_captions[i];
    }
}

そして、それは私のすべての行のヘッダーをキャプションでうまく埋めます。列を並べ替えようとすると、問題が発生します。このメソッドが再度呼び出され、行が異なる方法で配置されている場合でも、キャプションは同じ順序のままになります。次のようにこのメソッドが再度呼び出されないように、bool値を使用してみました。

private first_time = true;

private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e, DataSet src)
{
    if(first_time)
    {
        for (int i = 0; i < dataGridView1.Rows.Count; i++)
        {
            dataGridView1.Rows[i].HeaderCell.Value = row_captions[i];
        }
    }
}

private void dataGridView1_Sorted(object sender, EventArgs e)
{
    first_time = false;
}

ただし、行が削除されて再度追加され、プロパティが失われるため、キャプションはまったく追加されません(完全にわからないため、間違っている場合は修正してください)。

両方の方法はありますか:行のキャプションを維持し、それに応じて並べ替えますか?

4

1 に答える 1

1

HeaderCell.Value私はイベントCellFormattingとその並べ替えをそれに応じて設定しようとしました

 private void dataGridView`_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
    {
        if (e.ColumnIndex == 1)
        {
            dataGridView1.Rows[e.RowIndex].HeaderCell.Value = e.Value;
        }
    }
于 2012-12-17T15:23:19.807 に答える