1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

DataGridView の最下行で ↓ キーを押すとエラー (原因不明、対処のみ)

Posted at

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? の表示領域より大きくなるデータが存在する場合にこの問題が発生するように見えた。

確認した環境

上記のとおり

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?