DataGridView の最下行で ↓ キーを押すと例外がスローされる。原因不明なまま。対症療法だが、問題が発生しなくなったので記録しておく。
エラーメッセージ
追加情報: '74537' の値は 'Value' に対して有効ではありません。'Value' は 'minimum' と 'maximum' の間でなければなりません。
- 値 '74537' は表示する値によって変わる。
免責事項
このトピックの問題が発生すること、しないこと、問題を解決すること、環境に影響を与えないことを一切保証しない。本トピックの情報は、利用者の責任において使用することとする。
発生状況
- 開発環境: Visual Studio 2015
- ターゲット: .NET Framework 4.6
- プロジェクト: WinForms, C#, VB.NET
Visual Studio のデザイナで、DataGridView のプロパティを設定する。以下に、表示に関係しそうな部分だけ抜粋する。
dgv.AllowUserToAddRows = false;
dgv.AllowUserToDeleteRows = false;
dgv.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top
| System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
dgv.RowHeadersVisible = false;
Load イベントで DataGridView.DataSource に List<MyModel> を代入してセル高さを自動調整に設定する。表示するテキストは不定長だが、数千文字以上のデータが存在した。
dgv.AutoGenerateColumns = false;
dgv.DataSource = myModels.ToList();
dgv.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.DisplayedCells;
dgv.AutoSize = true;
表示後、マウスで一番下までドラッグしても最後の行まで表示されない。さらに、最後の行にフォーカスした状態でキー [↓] を押すと上記の例外がスローされる。
対処
表示する数千文字のテキストを数百文字に減らした。
調整した結果セルの高さが DataGridView? の表示領域より大きくなるデータが存在する場合にこの問題が発生するように見えた。
確認した環境
上記のとおり