大阪市中央区 システムソフトウェア開発会社

営業時間:平日09:15〜18:15
MENU

コントロールの仕組み

著者:伊関星児
公開日:2019/05/23
最終更新日:2019/05/23
カテゴリー:技術情報
タグ:

ども!こんばんは!

 

クローバーフィールドの伊関です。

 

真面目なタイトルの通り今日はいつもの無駄話はいっさいございません。

何故なら書くことが山程あるから!

 

それではいってみましょう!

 

◎フォームにコントロールを追加

Windowsフォームデザイナーを使って、Form1の上にラベルを2つ追加してから、Form1.Designer.csを開いてください。

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が自動的にこれらのコードを記述してくれます。おかげで私たちは意識することなく、クラスからインスタンスを生成できるのです。

 

以上です。

 

明日もこんな感じで長々とやります!

 

では!

    上に戻る