新しく質問する

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

役に立った:1件
  • 質問者:uiyiuq
  • 投稿日時:2009/07/14 21:30
  • 困り度:暇なときに回答をください
  • 友達に紹介
  • ブログに書く
  • 教えて!gooお気に入り

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の高さで表示されます。
どういうことなのでしょうか?

よろしくお願いします。

この質問に回答する
このQ&Aは役に立ちましたか?(役に立った:1件)

回答(1件)

  • 参考になった:0件
  • 回答者:OKbokuzyo
  • 回答日時:2009/07/15 11:56

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

優先というよりも、Loadイベントよりも以前にプロパティで設定した内容を元に
オブジェクトを生成しているためです。

<フォーム名>.Designer.vbというファイルがプロジェクトのフォルダに存在するので
テキストエディタ等で開いて見てください。
ここでフォームやDataGridViewといったコントロールのオブジェクトが
実際に生成されていることがわかると思います。
アプリケーションの実行時には、まずこのDesigner.vbファイルの内容を実行し、
その次にユーザの書いたコードが実行されるので結果として「30」→「15」となるのは当然です。

Visual Stadioのデザイナを用いてアプリケーションに変更を加えると、その内容に従ってこのファイルが自動で書き換えられます。
つまり、フォームやコントローラを作成するコードはすべてVisual Stadioが代行して記述しているのです。

以上、質問の意図と違う回答になっていましたらすいません。

通報する

この回答へのお礼

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

  
このQ&Aは役に立ちましたか?(役に立った:1件)

このページのトップへ

Facebook公式ページ

公式Twitter