2023/03/26

DataGridViewでの謎

 徐々にC#でのコーディングも慣れたり、コントロールの使い方もボチボチなんだけど、以前も謎な現象がDataGridViewで逢ったんですが今回もかなり苦労した。

そもそもカラムが何とかだとSortModeはAutomaticらしい。なので、実際普通にカラムヘッダークリックすればソートされ、もう一度クリックすればソートが逆にって感じだったんです。で、その方向が表示されれば良いなって事でアイビー先生に訊ねるとAutomaticにすれば表示される的な回答で、はて、既にAutomaticでも表示されないので色々と試す。

結論として、最初から自動だと表示されてなかったとは思うが、今となっては戻すの面倒なので確認しませんが、ColumnHeaderMouseClickイベントに追加で該当カラムのヘッダーセルのSortGlyphDirectionに現在のSortOrderをセットして解決するべくコーディングしたり、そもそも、表示したいヘッダーに十分な幅が無いので広げたり、で、フォームのデザイン画面から幅いじり出したらその昔に苦労させられたバグに遭遇。いじったカラムも設定値にならないし、他のカラムもなんか変なサイズになったり、ヘッダーの高さまで変わる始末orz まあ、幅や高さをフォームのLoadイベントで全て設定する様に変更しました。で、このグリム何故かヘッダーの高さを33以上にすると表示される。32では表示されない。

private void dvg_ColumnHeaderMouseClick(Object sender, DataGridViewCellMouseEventArgs e)
{
    DataGridView dgv = (DataGridView)sender;
    DataGridViewColumn sortedColumn = dgv.Columns[e.ColumnIndex];
    sortedColumn.HeaderCell.SortGlyphDirection = dgv.SortOrder;
}

0 件のコメント:

コメントを投稿