コントロールの仕組み
ども!こんばんは!
クローバーフィールドの伊関です。
真面目なタイトルの通り今日はいつもの無駄話はいっさいございません。
何故なら書くことが山程あるから!
それではいってみましょう!
◎フォームにコントロールを追加
Windowsフォームデザイナーを使って、Form1の上にラベルを2つ追加してから、Form1.Designer.csを開いてください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | private void IntializeComponent() { this.label1=new System.Windows.Forms.label1();-① this.label2=new System.Windows.Forms.label2();-② this.SuspendLayout();-③ // //label1-④ // this.label1.AutoSize=true; this.label1.Location=new System.Drawing.Point(13,13); this.label1.Name=″label1″; this.label1.Size=new System.Drawing.Size(35,12); this.label1.TabIndex=0; this.label1.Text=″label1″; // //label2-④ // this.label2.AutoSize=true; this.label2.Location=new System.Drawing.Point(13,13); this.label2.Name=″label2″; this.label2.Size=new System.Drawing.Size(35,12); this.label2.TabIndex=1; this.label2.Text=″label2″; // //Form1 // this.AutoScaleDimentions=new System.Drawing.SizeF(6F,12F); this.AutoScaleMode=System.Windows.Forms.AutoScaleMode.Font; this.ClientSize=new System.Drawing.Size(284,261); this.Contorols.Add(this.label2);-⑤ this.Contorols.Add(this.label1);-⑤ this.Name=″Form1″; this.Text=″Form1″; this.ResumeLayout(false);-⑥ this.PerformLayout(); |
①はSystem.Windows.Forms名前空間のLabelクラスをインスタンス化し、Form1のlabel1を生成しています。同様に②は、label2を生成しています。このように一つのクラスから、複数のインスタンスを生成することができます。④は、label1とlabel2の各プロパティを設定している部分です。プロパティウィンドウでlabel1とlabel2のプロパティを確認してみてください。④と同じように、プロパティが設定されているはずです。
さらにコードの続きを見てみましょう。⑤でフォームにLabel1とlabel2を追加しています。
そして、③の「this.SuspendLayout();」はコントロールのレイアウト処理を一時的に中断し、⑥の「this.ResumLayout(false);」で再開する処理を行っています。もし、レイアウト処理を中断しないままコントロールのプロパティを変更すると、変更のたびに描画が行われて、パフォーマンスが低下します。そのため、一時的にレイアウト処理を中断するのです。
Windowsフォームデザイナーを使ってフォームにコントロールを配置している裏で、Visual Studioが自動的にこれらのコードを記述してくれます。おかげで私たちは意識することなく、クラスからインスタンスを生成できるのです。
以上です。
明日もこんな感じで長々とやります!
では!