• 締切済み

Form1_Loadイベントのコードよりプロパティが優先?

vb2005です。 フォーム1にDataGridView1を設置し、アクセスのテーブルにバインドしています。 デザインのプロパティでは「30」、 コードの Form1_Loadイベントには Me.DataGridView1.RowTemplate.Height = 15 として実行すると、 最初は30の行の高さで表示され、 フィールド部分をクリックして並べ替えると、 15になります。 Form1_Loadイベントに、 MsgBox(Me.DataGridView1.RowTemplate.Height) Me.DataGridView1.RowTemplate.Height = 15 MsgBox(Me.DataGridView1.RowTemplate.Height) としてみたら、 「30」→「15」となりました。 と言うことは、フォーム表示時には15にならなければいけないのに、30の高さで表示されます。 どういうことなのでしょうか? よろしくお願いします。

みんなの回答

  • OKbokuzyo
  • ベストアンサー率43% (130/296)
回答No.1

> Form1_Loadイベントのコードよりプロパティが優先? 優先というよりも、Loadイベントよりも以前にプロパティで設定した内容を元に オブジェクトを生成しているためです。 <フォーム名>.Designer.vbというファイルがプロジェクトのフォルダに存在するので テキストエディタ等で開いて見てください。 ここでフォームやDataGridViewといったコントロールのオブジェクトが 実際に生成されていることがわかると思います。 アプリケーションの実行時には、まずこのDesigner.vbファイルの内容を実行し、 その次にユーザの書いたコードが実行されるので結果として「30」→「15」となるのは当然です。 Visual Stadioのデザイナを用いてアプリケーションに変更を加えると、その内容に従ってこのファイルが自動で書き換えられます。 つまり、フォームやコントローラを作成するコードはすべてVisual Stadioが代行して記述しているのです。 以上、質問の意図と違う回答になっていましたらすいません。

uiyiuq
質問者

お礼

Designer.vbというものに詳しいプロパティが記載されているのですね。 ご回答ありがとうございます。

関連するQ&A