- - PR -
Withでフォームを指定すると「ArgumentOutOfRangeException」が発生する
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2009-01-22 11:50
こんにちは、ボビンと申します。
下記のコードの1行目「With Frm_Search_Tatemono」で 「System.ArgumentOutOfRangeException」が発生するのですが 原因がわからず悩んでいます。 Frm_Search_Tatemonoに引数が必要とのエラーなのでしょうか? 他にも同じような処理で別のフォームをwithで指定している コードもあるのですが、そちらはエラーが出ていません。 Frm_Search_Tatemonoが怪しいとは思うのですが、特別変わったことはしていません。 Frm_Search_Tatemonoのこのあたりをチェックしたらいいよ、等 お手数ですがわかる方がいましたら、教えていただけると助かります。
WinXP、VB2005にて開発しております。 よろしくお願いします。 | ||||||||
|
投稿日時: 2009-01-22 11:55
自己レスです。
エラーはイミディエイトウィンドウに表示される状態で、 try〜CatchではCatchされていません。 アプリ自体は続行できております。 | ||||||||
|
投稿日時: 2009-01-22 16:00
自己レスです。
解決しました! 原因は、 Frm_Search_Tatemono内で、コンボボックスを使用しています。 そのコンボボックスの初期値をセットしているロジックを↓
次のように変更しました↓
エラーは、コンボボックスにはまだitemをセットしていないのに 「.SelectedIndex = 0」を指定しているがために起きていました。 ただ不可解なのはブレークポイントをおいても、このロジックは通りません。 ステップ実行では通らないけど、「With Frm_Search_Tatemono」の時点で 一度ソースを読み込むような動きをしているようです。 解決はしましたが、100%理解していないので、 このような動きに詳しい方がいらっしゃいましたら 後学のために教えて下さい。 推測等でもかまわないです。 | ||||||||
|
投稿日時: 2009-01-22 18:50
「Form の既定のインスタンス」 を使っているがためにそう見えるだけでしょう。 "ソースを読み込む" ではなく初回参照時の Load が走っているという理解が正しいです。 Form の既定のインスタンスはこういった動きの理解の妨げになる (事実、こういった不具合の温床になっている) ので私は昔から反対しています。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2009-01-23 09:41
なるほど、なぜnewしていないのに使えるのかと不思議でしたが
「Formの既定のインスタンス」ですか。 便利そうな一面もありますが、混乱の元ですね。 確かにオプションで制限できた方がいいと思います。 というかこんな機能ない方がいいのでは・・・ じゃんぬねっとさん、どうもありがとうございます。 勉強になりました。 |
1