C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: datagridviewの例外について


(過去ログ 100 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■59487 / inTopicNo.1)  datagridviewの例外について
  
□投稿者/ kei (5回)-(2011/05/27(Fri) 13:05:59)

分類:[C#] 

はじめての質問で、なにかと失礼があるかもしれませんがよろしくお願いします。
皆さんのご意見を聞かせて下さい。

環境:C# 2010

C#において、datagridviewの例外が発生して、原因がわからず困っています。
例外テキストは下記のものが表示されております。(Releaseしたもので発生しているため、これより詳細はありません)
例外の発生場所からすると、私が書くコードよりも奥深くで発生しているような気がします。
この例外からどのような原因が考えられるか、意見をよろしくお願いします。



************** 例外テキスト **************
System.NullReferenceException: オブジェクト参照がオブジェクト インスタンスに設定されていません。
   場所 System.Windows.Forms.DataGridViewRowHeaderCell.PaintPrivate(Graphics graphics, Rectangle clipBounds, Rectangle cellBounds, Int32 rowIndex, DataGridViewElementStates dataGridViewElementState, Object formattedValue, String errorText, DataGridViewCellStyle cellStyle, DataGridViewAdvancedBorderStyle advancedBorderStyle, DataGridViewPaintParts paintParts, Boolean computeContentBounds, Boolean computeErrorIconBounds, Boolean paint)
   場所 System.Windows.Forms.DataGridViewRowHeaderCell.Paint(Graphics graphics, Rectangle clipBounds, Rectangle cellBounds, Int32 rowIndex, DataGridViewElementStates cellState, Object value, Object formattedValue, String errorText, DataGridViewCellStyle cellStyle, DataGridViewAdvancedBorderStyle advancedBorderStyle, DataGridViewPaintParts paintParts)
   場所 System.Windows.Forms.DataGridViewCell.PaintWork(Graphics graphics, Rectangle clipBounds, Rectangle cellBounds, Int32 rowIndex, DataGridViewElementStates cellState, DataGridViewCellStyle cellStyle, DataGridViewAdvancedBorderStyle advancedBorderStyle, DataGridViewPaintParts paintParts)
   場所 System.Windows.Forms.DataGridViewRow.PaintHeader(Graphics graphics, Rectangle clipBounds, Rectangle rowBounds, Int32 rowIndex, DataGridViewElementStates rowState, Boolean isFirstDisplayedRow, Boolean isLastVisibleRow, DataGridViewPaintParts paintParts)
   場所 System.Windows.Forms.DataGridViewRow.Paint(Graphics graphics, Rectangle clipBounds, Rectangle rowBounds, Int32 rowIndex, DataGridViewElementStates rowState, Boolean isFirstDisplayedRow, Boolean isLastVisibleRow)
   場所 System.Windows.Forms.DataGridView.PaintRows(Graphics g, Rectangle boundingRect, Rectangle clipRect, Boolean singleHorizontalBorderAdded)
   場所 System.Windows.Forms.DataGridView.PaintGrid(Graphics g, Rectangle gridBounds, Rectangle clipRect, Boolean singleVerticalBorderAdded, Boolean singleHorizontalBorderAdded)
   場所 System.Windows.Forms.DataGridView.OnPaint(PaintEventArgs e)
   場所 System.Windows.Forms.Control.PaintWithErrorHandling(PaintEventArgs e, Int16 layer)
   場所 System.Windows.Forms.Control.WmPaint(Message& m)
   場所 System.Windows.Forms.Control.WndProc(Message& m)
   場所 System.Windows.Forms.DataGridView.WndProc(Message& m)
   場所 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   場所 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   場所 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

引用返信 編集キー/
■59489 / inTopicNo.2)  Re[1]: datagridviewの例外について
□投稿者/ todo (147回)-(2011/05/27(Fri) 13:38:05)
http://www.google.com/search?q=NullReferenceException+DataGridViewRowHeaderCell.PaintPrivate

DataSourceを変更するとき一旦Visibleをfalseにする?
引用返信 編集キー/
■59491 / inTopicNo.3)  Re[2]: datagridviewの例外について
□投稿者/ kei (6回)-(2011/05/27(Fri) 14:03:15)
No59489 (todo さん) に返信
> http://www.google.com/search?q=NullReferenceException+DataGridViewRowHeaderCell.PaintPrivate
>
> DataSourceを変更するとき一旦Visibleをfalseにする?

返信ありがとうございます。

DataGridViewのあるフォームのVisibleはfalseの場合があります。

一つのパネルに複数フォームを貼付けており、画面切り替えボタンによって、
全てのフォームのVisibleをfalseにして、目的のフォームのVisibleをtrueにして使用しています。
そのフォームの内の一つに問題のDataGridViewが有ります。

DataSouceの更新はどのフォームを表示しているときでも、データが読み込まれたタイミングで発生します。

ちなみにDataGridViewのVisibleをfalseにすることは有りません。Enabledをfalseにすることはありますが。

DataGridViewをPaintする時に発生するようですが、Visibleがfalseになっていることが関係するのでしょうか?

載せて頂いたリンクも読んでみます。





引用返信 編集キー/
■59497 / inTopicNo.4)  Re[3]: datagridviewの例外について
□投稿者/ tomo (5回)-(2011/05/27(Fri) 16:09:10)
google検索結果から見るに、
DataGridViewのデータを更新するのに、スレッドを利用されてますか?

もしそうならば、invokeを使う必要があるみたいです。

下記URLを参考にしました。
http://www.eggheadcafe.com/software/aspnet/35350196/exception.aspx
http://blogs.msdn.com/b/tess/archive/2008/08/27/debugging-puzzler-winforms-crash-can-you-figure-out-what-caused-it.aspx
引用返信 編集キー/
■59498 / inTopicNo.5)  Re[4]: datagridviewの例外について
□投稿者/ kei (8回)-(2011/05/27(Fri) 17:16:29)
No59497 (tomo さん) に返信
> google検索結果から見るに、
> DataGridViewのデータを更新するのに、スレッドを利用されてますか?
>
> もしそうならば、invokeを使う必要があるみたいです。
>
> 下記URLを参考にしました。
> http://www.eggheadcafe.com/software/aspnet/35350196/exception.aspx
> http://blogs.msdn.com/b/tess/archive/2008/08/27/debugging-puzzler-winforms-crash-can-you-figure-out-what-caused-it.aspx

返信ありがとうございます。
google検索結果を読んでみると、確かにスレッドの話が出てきますね。

私は今までスレッドを意識したことが有りませんでした。

実際、サブスレッドが存在する可能性が有ります。
DataSourceの切換えは、他のdllから貰うイベントによるものだからです。(その内容によっては・・・)

とりあえず、そこから調べてみます。
ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -