なぜ.NETにはForm1.Loadってないんですか?

解決


ドットネット初心者  2005-03-13 18:25:24  No: 88815

VB6では標準モジュールからForm1.Loadなんてことができて、Loadイベントの中に初期処理を組み込みことをしてました。.NETではformオブジェクトを記述してもLoadステートメント(関数?)が表示されません。ShowDialogとShowが出るだけです。FormLoadイベント自体は当然あるのですが、これまで同様Loadイベントで初期処理を組み込もうと思っています。これは正しいやり方ではないのでしょうか?NEW(クラスの初期処理)の中ですべての初期処理を行えばいいのでしょうか?


ガッ  2005-03-13 19:34:12  No: 88816

とりあえず整理。
・Load関数がないのはなぜ?
・[Form].Loadはないの?
・[Form]のLoadイベントの中で初期化するのはいいこと?
  それともコンストラクタの中で初期化すればいいの?
…と受け取りました。
とりあえず、オブジェクト指向を学んだほうが吉。

で、VB6にForm1.Loadなんて出来たっけかや?
メンバに無いぞ?
そしてVB6の"[Form1]というクラスを作ったら、自動的にForm1という[Form1]のインスタンスへの参照がなされている変数が定義される"
にかなり惑わされてる悪寒…


たかみちえ  URL  2005-03-13 19:53:50  No: 88817

確かに少々オブジェクト指向等を学びなおした方がいいと思います。以前のVBはオブジェクト指向"風"言語だっただけですが、.NETは本当のオブジェクト指向言語なので。
  …で、FormのLoadイベントですが、どっちにもありますよ、フォームをダブルクリックすると出てくると思います(ただし自動生成される関数名が若干違うかも)


たかみちえ  URL  2005-03-13 20:07:03  No: 88818

質問がLoadイベントはないのかどうかというのと勘違いしてしまいました、ごめんなさい。

  さて、で、質問の件ですが、.NETの場合、プログラムのエントリポイントは、モジュールまたはクラスメンバ(Shared宣言されている)のMainまたは、指定されたフォームのコンストラクタになってます(プロジェクトオプションで変更可)。これはヘルプにも載っているので、見てみてください。
  Mainの場合、クラスは当然生成されてないので、Newでインスタンス化しなければいけません。
初期化処理は、コンストラクタでも、FormのLoadイベントでもいいと思います、コンストラクタ内でLoadイベントは呼び出されるので(呼び出しのタイミングはよく分かりませんが、コンストラクタの処理のあとと考えて良さそうです)、どちらで記述しても大差はありません。今までのものと見てくれを同一にしたいのならば、Loadイベントの方がいいかな といったところです。

  ただし、どちらにしてもオブジェクト指向は学び直した方が良さそうです。VB6とVB.NETは違いますので。


ドットネット初心者  2005-03-13 23:27:41  No: 88819

皆様貴重なお時間を割いていただき、ご意見ありがとうございました。
がんばって学習します。・・・とはいえこの仕事も進めざるを得ない事情もありますので今後も懲りずに質問させてください。またよろしくお願いいたします。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加