• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:DataGridViewがクラッシュする)

DataGridViewがクラッシュする

このQ&Aのポイント
  • VB2005を使用しています。DataGridViewコントロールで、以下のようなコードを実行した際に、DataGridViewコントロール自体が大きな赤い×の表示になることがあります。
  • DataGridViewの設定や操作に関する問題で、DataGridViewがクラッシュする現象が発生しています。
  • DataGridViewのクラッシュを回避する方法をご教授ください。

質問者が選んだベストアンサー

  • ベストアンサー
noname#221368
noname#221368
回答No.2

>「オブジェクト参照がオブジェクトインスタンスに設定されていません」 から考えて、DataGridView1.Columns.Clear()の、DataGridView1かColumnsがNothingになっていると思えます。  DataGridView1が消えるとは思えないので、動的に生成・削除されるColumnsがNothingでしょう。  コードの冒頭で初期化するために、DataGridView1.Columns.Clear()を使っているので、これは初期化のタイミングの問題と思われます。特にApp起動時にこのような事を行うと、「オブジェクト参照がオブジェクトインスタンスに設定されていません」は良く出ます。DataGridView1はDataを詰め込む前で、Columnsが生成されていないからです。私も良く出します。

muta1234
質問者

お礼

ありがとうございます。 そのあたりを調べてみます。

その他の回答 (2)

noname#221368
noname#221368
回答No.3

 #2の追伸です。  DataGridView1.Columns.Clear()の直後に、DataGridView1.DataSource = dtDataとされていますが、DataGridViewは、ある意味非常に良く出来ていて、DataSourceの内容変化に忠実に追随して表示を変化させます。  dtDataはDataSetとなっていますが、dtDataがBindingSourceの場合なら、これは確実です。その場合、DataGridView1.Columns.Clear()の初期化は要らないと思います。また、DataGridView.Clearなら、ColumnsがNothingでも動くと思います。

muta1234
質問者

お礼

ご回答ありがとうございます。 今回のケースは、DataBindingSourceではないので、 何らかのクリアは必要な状況です。 クリアをしないと、列が追加されていきます。 また、DataGridView.Clear()メソッドはなかったような。 DataGridView.ClearSelection()はありました。

muta1234
質問者

補足

遅くなりましたが、 DataGridView1.Columns.Clear() の部分を以下のようにしたら現象が出なくなったようです。 For i = 0 To DataGridView1.Columns.Count - 1 DataGridView1.RemoveAt(0) Next i ありがとうございました。

noname#221368
noname#221368
回答No.1

 例外発生箇所を特定できないのでしょうか?。  発生箇所の特定が、解決への早道だと思います。

muta1234
質問者

お礼

ご回答ありがとうございます。 現在特定中ですので、判明したらお知らせします。

muta1234
質問者

補足

調べたところ、 'クリア DataGridView1.Columns.Clear() のところで発生しているようです。

関連するQ&A