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












