Tree Menu

J#(Java)コントロールの配列を作成する

コントロールの配列を作成するには、配列を定義し、それらをインスタンス化してフォームに追加する必要があります。

まず、コントロールの配列を、プライベートなメンバとして定義しておきます。この配列をインスタンス化して、フォームへ追加するだけで配置されます。追加する際に、初期化しておきたいプロパティなどの設定も忘れずに行ってください。

また、この時イベント ハンドラの統合もできます。統合されたイベントでは、sender 引数を利用してイベントが起きたコントロールを特定できます。

当たり前ですが、これらの作業はフォームが表示される前に行うことが多いと思います。以下の例は Form が Load された時に、動的にコントロールの配列を作成しフォームに追加します。ついでに、イベント ハンドラの統合の一例も行っています。

サンプルコード

以下にサンプルコードを示します。

J# (Java)
// プライベートなフィールドとして配列を定義する
private TextBox[] myTextBoxes;

// Load イベントで配列を動的に作成してフォームに加える
private void Form1_Load(Object sender, System.EventArgs e) {
    // 10 個の配列を確保する
    this.myTextBoxes = new TextBox[10];

    for (int i = 0; i <= 9; i++) {
        // 新しいインスタンスを生成する
        this.myTextBoxes[i] = new TextBox();

        // ここで、プロパティなどを必要に応じて設定します
        this.myTextBoxes[i].set_Name("myTextBox" + System.Convert.ToString(i));
        this.myTextBoxes[i].set_Text("myTextBox" + System.Convert.ToString(i));
        this.myTextBoxes[i].set_Top (i * 20);

        // このコントロールをフォームに追加する
        this.get_Controls().Add(this.myTextBoxes[i]);

        // イベントも統合する場合は、イベント ハンドラを追加する
        this.myTextBoxes[i].add_TextChanged(new System.EventHandler(myTextBoxes_TextChanged));
    }
}

// フォームの Load イベントで追加したイベント
private void myTextBoxes_TextChanged(Object sender, System.EventArgs e) {
    // イベントが起きたコントロールは sender 引数から取得する
    TextBox cTextBox = (TextBox)sender;

    // イベントが起きたコントロール名とその旨を表示する
    MessageBox.Show(cTextBox.get_Name() + " の Text を変更しました");
}