DOBON.NET DOBON.NETプログラミング掲示板過去ログ

「列を含んでいない DataGridView コントロールに行を追加することはできません。」エラーについて

環境/言語:[Visual Studio 2008 (.Net Framework 3.5)]
分類:[.NET]

お世話になります。

現在開発中のアプリで、フォーム上にDataGridViewのオブジェクトを作成し、
DBから取得した値を、このDataGridViewに明細表示させるという画面があります。
この画面は前段にメニュー画面があり、そこから立ち上げます。

問題なのは、新規でアプリ起動しメニューから本画面を立ち上げて処理した場合は
正常に明細表示されるのですが、いったん本画面を閉じてメニュー画面に戻り、
再度本画面を立ち上げて処理すると、タイトルのエラーが発生してexeptionエラーとなり、
明細表示されないという不具合が発生してしまっています。

DataGridViewは静的オブジェクトであり、フォーム作成時に当然列も作成しております。なのにこんなエラーが発生してしまいます。
ひょっとして、画面ロード時のフォームの初期化がうまくいっていないのかとも思いましたが、原因は不明です。
何かDataGridViewのプロパティの設定などがあるのでしょうか?

記載した情報が少ないかもしれませんが、どなたかこのような不具合を経験し、
解決方法をご存じの方、見えないでしょうか?

どうぞ宜しくお願いします。
Form が Close される時、その Form に含まれている各コントロールも Dispose されます。そこで列情報も(他の色々なことも)削除されたってことです。
Form に乗せるコントロールは、その Form が New されるごとに毎回作成するようにしてください。ていうか DataGridView を動的に作成してるんですか?
ご返信ありがとうございます。

> Form に乗せるコントロールは、その Form が New されるごとに毎回作成するようにしてください。ていうか DataGridView を動的に作成してるんですか?
DataGridView は静的オブジェクトです。
列は固定で設定しており、何かの処理毎に列を増減させたりはしておりません。
また、下記の通り画面の初期化は行っております。

Public Sub New()

InitializeComponent()

End Sub


何か原因分かれば、ご教授お願いします。
■No25872に返信(vermillionさんの記事)

デバッグしましょうよ。

>タイトルのエラーが発生してexeptionエラーとなり、

どの行でエラーが発生しているか見つけましたか?
どんな実装しているか解らなくては答えようもありません。

メニュー画面に戻るときに Columns をクリアしていることはありませんか?
■No25873に返信(ヴァンさんの記事)
> メニュー画面に戻るときに Columns をクリアしていることはありませんか?

そういえば、DataSource プロパティに Nothing とか設定すると
列も初期化されちゃうことがありますね。
> どの行でエラーが発生しているか見つけましたか?
> どんな実装しているか解らなくては答えようもありません。
デバッグを行い、エラー箇所は分かっております。
以下のコードを通る際、エラーが発生します。

  'データグリッドビューの行の追加
Me.Dgv_Detail.Rows.Add()

> メニュー画面に戻るときに Columns をクリアしていることはありませんか?
Columnのクリアは行っておりません。
Me.Closeで画面を閉じているのみです。


以上です。
> そういえば、DataSource プロパティに Nothing とか設定すると
> 列も初期化されちゃうことがありますね。
DataSource プロパティを確認しましたら、「(なし)」となっていました。
かといって、設定するには、データソース構成ウィザードが出てきてしまい、
我々の開発に不要な設定のようです。

以上です。
■No25875に返信(vermillionさんの記事)

> 以下のコードを通る際、エラーが発生します。
>
>   'データグリッドビューの行の追加
> Me.Dgv_Detail.Rows.Add()

それで?
その手前からステップ実行させながら、あるべきデータがあることは確認しましたか?
もし、無かったとしたら、それが何処で無くなったのか確認しましたか?

DOBON.NET | プログラミング道 | プログラミング掲示板