VB6では標準モジュールからForm1.Loadなんてことができて、Loadイベントの中に初期処理を組み込みことをしてました。.NETではformオブジェクトを記述してもLoadステートメント(関数?)が表示されません。ShowDialogとShowが出るだけです。FormLoadイベント自体は当然あるのですが、これまで同様Loadイベントで初期処理を組み込もうと思っています。これは正しいやり方ではないのでしょうか?NEW(クラスの初期処理)の中ですべての初期処理を行えばいいのでしょうか?
とりあえず整理。
・Load関数がないのはなぜ?
・[Form].Loadはないの?
・[Form]のLoadイベントの中で初期化するのはいいこと?
それともコンストラクタの中で初期化すればいいの?
…と受け取りました。
とりあえず、オブジェクト指向を学んだほうが吉。
で、VB6にForm1.Loadなんて出来たっけかや?
メンバに無いぞ?
そしてVB6の"[Form1]というクラスを作ったら、自動的にForm1という[Form1]のインスタンスへの参照がなされている変数が定義される"
にかなり惑わされてる悪寒…
確かに少々オブジェクト指向等を学びなおした方がいいと思います。以前のVBはオブジェクト指向"風"言語だっただけですが、.NETは本当のオブジェクト指向言語なので。
…で、FormのLoadイベントですが、どっちにもありますよ、フォームをダブルクリックすると出てくると思います(ただし自動生成される関数名が若干違うかも)
質問がLoadイベントはないのかどうかというのと勘違いしてしまいました、ごめんなさい。
さて、で、質問の件ですが、.NETの場合、プログラムのエントリポイントは、モジュールまたはクラスメンバ(Shared宣言されている)のMainまたは、指定されたフォームのコンストラクタになってます(プロジェクトオプションで変更可)。これはヘルプにも載っているので、見てみてください。
Mainの場合、クラスは当然生成されてないので、Newでインスタンス化しなければいけません。
初期化処理は、コンストラクタでも、FormのLoadイベントでもいいと思います、コンストラクタ内でLoadイベントは呼び出されるので(呼び出しのタイミングはよく分かりませんが、コンストラクタの処理のあとと考えて良さそうです)、どちらで記述しても大差はありません。今までのものと見てくれを同一にしたいのならば、Loadイベントの方がいいかな といったところです。
ただし、どちらにしてもオブジェクト指向は学び直した方が良さそうです。VB6とVB.NETは違いますので。
皆様貴重なお時間を割いていただき、ご意見ありがとうございました。
がんばって学習します。・・・とはいえこの仕事も進めざるを得ない事情もありますので今後も懲りずに質問させてください。またよろしくお願いいたします。
ツイート | ![]() |