- PR -

Form のプロパティを Control の初期化処理で参照したい

1
投稿者投稿内容
ボア
ベテラン
会議室デビュー日: 2002/05/22
投稿数: 78
投稿日時: 2004-01-28 13:23
VB.NET でWindowsフォームアプリを開発しています。
初期設定処理において、Form 上に配置された Control の初期化時に、
これが配置されている Form のプロパティを参照して、その値に
対応した初期化処理を行ないたいと考えています。

ただ、これを実現するための前提として、
・上記 Control の初期化時には、この Control は Form に Add
されている必要がある
・同様に、Form の対象プロパティがセットされている必要がある
と思います。

このような、各 Control の初期化処理は、どこに実装すべきでしょうか。

VS.NET が自動生成するソースを見てみると、
・Control が New されるタイミングでは、まだ Form に Add されて
いないようだ。
・Form のプロパティ設定は、各 Control のプロパティ設定よりも
後に行なわれている
・Control が Form に Add された時には Form のプロパティがセット
されていることが保証されるのか?
(Form の Name や Text プロパティは、各 Control が Add されてから
設定されているようだが。。)

ということを考えると、Control が Add されたタイミングでセット
すべきか?とも思えるのですが、いまいち確証が持てません。

iStation
大ベテラン
会議室デビュー日: 2003/12/08
投稿数: 158
投稿日時: 2004-01-28 15:05
引用:

ということを考えると、Control が Add されたタイミングでセット
すべきか?とも思えるのですが、いまいち確証が持てません。



これで確証が持てますね!

// file: testform.cs
// compile csc /t:winexe testform.cs

using System;
using System.Windows.Forms;

namespace MyForms
{
 public class TestForm : Form
 {
  public static void Main()
  {
   Application.Run(new TestForm());
  }
  public TestForm()
  {
   Text = "Test Form";
   Width = 200;
   Height = 100;
   CenterToScreen();

   Button b = new Button();
   b.Text = this.Text;
   b.Click += new EventHandler(clickHandler);
   Controls.Add(b);
  }

  private void clickHandler(object sender, EventArgs e)
  {
   Text = String.Format("OK?!");
  }
 }
}


[ メッセージ編集済み 編集者: iStation 編集日時 2004-01-28 15:14 ]
よねKEN
ぬし
会議室デビュー日: 2003/08/23
投稿数: 472
投稿日時: 2004-01-28 16:37
引用:

ボアさんの書き込み (2004-01-28 13:23) より:
VB.NET でWindowsフォームアプリを開発しています。
初期設定処理において、Form 上に配置された Control の初期化時に、
これが配置されている Form のプロパティを参照して、その値に
対応した初期化処理を行ないたいと考えています。

ただ、これを実現するための前提として、
・上記 Control の初期化時には、この Control は Form に Add
されている必要がある
・同様に、Form の対象プロパティがセットされている必要がある
と思います。

このような、各 Control の初期化処理は、どこに実装すべきでしょうか。



単純にFormのLoadイベントで初期処理を行えばよいと思います。
もしこの方法ではまずいということであれば、
まずい理由ともう少し具体的なやりたいことを提示して下さい。
1

スキルアップ/キャリアアップ(JOB@IT)