none
VB2005のFormのコンストラクタ RRS feed

  • 質問

  • VS2005でVBのFormを新規追加し、作成されたソースを見ると、Formのコンストラクタ(Public Sub New())の記述がどこにも見当たりません。(Form1.Designer.vbファイルの中にもありません)

     

    なのでInitializeComponentを呼び出している箇所も見当たらないのですが、デバッグしてみるとInitializeComponentはちゃんと呼び出されているようなのです。

     

    コンストラクタはどこへ行ったのでしょうか?

    また、InitializeComponentはどこから呼び出されているのでしょうか?
    2007年4月11日 10:00

回答

  •  mim さんからの引用
    コンストラクタはどこへ行ったのでしょうか?また、InitializeComponentはどこから呼び出されているのでしょうか?

    見えていないだけで、今までと同じでデフォルト コンストラクタは存在します。
    また、InitializeComponent メソッドもデフォルト コンストラクタで呼び出されています。

    試しに、デフォルト コンストラクタを書いてみてください。
    見えるようになります。(というより、InitializeComponent メソッドが勝手に付加されます)
    2007年4月11日 11:01

すべての返信

  •  mim さんからの引用
    コンストラクタはどこへ行ったのでしょうか?また、InitializeComponentはどこから呼び出されているのでしょうか?

    見えていないだけで、今までと同じでデフォルト コンストラクタは存在します。
    また、InitializeComponent メソッドもデフォルト コンストラクタで呼び出されています。

    試しに、デフォルト コンストラクタを書いてみてください。
    見えるようになります。(というより、InitializeComponent メソッドが勝手に付加されます)
    2007年4月11日 11:01
  • てっきりC#と同じでパーシャルクラスであるもんだと思ってたんですが、VB.NETでは

    見えてないんですね。

     

    参考になるサイトがありましたのでご覧ください。

    [アプリケーションが始まるときに呼び出す位置(エントリポイント)を変更する]

    http://dobon.net/vb/dotnet/programing/startupobject.html

    2007年4月11日 11:23
  • 回答ありがとうございます。

     

    "デフォルトコンストラクタ"で検索するといろいろ情報がみつかりました。

     

    FormクラスのMicrosoft.VisualBasic.CompilerServices.DesignerGenerated 属性により、InitializeComponent メソッドが暗黙的に呼び出される、という理屈のようですね。

     

    DesignerGeneratedAttribute クラス

    http://msdn2.microsoft.com/ja-jp/library/microsoft.visualbasic.compilerservices.designergeneratedattribute(VS.80).aspx

    2007年4月11日 11:46
  •  mim さんからの引用
    DesignerGeneratedAttribute クラス

    そうですね。(次の発言内容を取られてしまいました...) それでも貼っておきます。

    個人的には 「お節介な幼馴染状態」 という意見に同意です。
    2007年4月12日 0:57