2011-11-07 14 views
2

vb.net .net 2010フォームにdatagridviewを配置し、フォームロード時にこのコードを入力します。仮想モードのDataGridviewでSystem.StackOverflowExceptionが発生する

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
     dg.VirtualMode = True 
     dg.Columns.Add("a", "a") 
     dg.RowCount = 30000 
     dg.FirstDisplayedScrollingRowIndex = dg.RowCount - 1 
    End Sub 

プロジェクトを実行します。数秒後、System.StackOverflowExceptionでクラッシュします。 誰かが何が起こるか考えていますか?バグのようです。おかげさまで

+0

DataGridViewでイベントの追加コードを表示できますか?無限に再帰的なコードがあるかもしれません。 –

+0

あなたの 'VirtualMode'イベントハンドラを見ることなく、私が危険を冒すことができるのは、あなたのハンドラの1つ以上で、' e.Value'を使う代わりに直接 'DataGridView'を操作していることです。検索された値。詳細と例については、[DataGridViewの仮想モードに関するMSDNの記事](http://msdn.microsoft.com/en-us/library/ms171622.aspx)を参照してください。 –

+0

このコードだけでVS2010で新しいプロジェクトを開始しましたが、クラッシュしません...空のプロジェクトでもテストしましたか? –

答えて

0

エラーは、dg.rowcountフィールドが読み取り専用であり、値を割り当てられているためです。 とし、正確なエラーが表示されるようにプロジェクトモードをリリースではなくデバッグに設定します。 この行を削除:

dg.rowcount = 30000とうまくいくはずです。

関連する問題