タイトル
 メニューにないコーナーはTopからいけます
TOP.NETWindowsForm → This Page

.NET プログラミングのコーナー
クラス関連 > コントロール関連 > 動的コントロール配列


概要


動的コントロール配列のサンプルです。


サンプルイメージ


サンプル画像


サンプルソース(一部抜粋)

C#

public System.Windows.Forms.Button[] mButton = new System.Windows.Forms.Button[5];
public System.Windows.Forms.TextBox[] mTextBox = new System.Windows.Forms.TextBox[5];

private void Form1_Load(object sender, System.EventArgs e)
{
	//ボタンコントロールのインスタンス作成し、プロパティを設定する
	for (int intLoop = 0; intLoop <= 4; intLoop++)
	{
		//インスタンス作成
		mButton[intLoop] = new System.Windows.Forms.Button();
		mTextBox[intLoop] = new System.Windows.Forms.TextBox();

		//各種プロパティ設定
		mButton[intLoop].Name = "Button" + intLoop.ToString();
		mButton[intLoop].Text = "Button" + intLoop.ToString();
		mButton[intLoop].Size = new Size(150, 30);
		mButton[intLoop].Location = new Point(10, 10 + 40 * intLoop);
		mButton[intLoop].Tag = intLoop;

		mTextBox[intLoop].Name = "TextBox" + intLoop.ToString();
		mTextBox[intLoop].Text = "TextBox" + intLoop.ToString();
		mTextBox[intLoop].Size = new Size(150, 30);
		mTextBox[intLoop].Location = new Point(170, 15 + 40 * intLoop);
		mTextBox[intLoop].Tag = intLoop;

		//以下はデフォルトで設定されているので不要だが念のため設定
		mButton[intLoop].Enabled = true;
		mButton[intLoop].Visible = true;
		mTextBox[intLoop].Enabled = true;
		mTextBox[intLoop].Visible = true;

		//イベントの関連付け
		mButton[intLoop].Click += new EventHandler(Button_Click);
	}

	//フォームにコントロールを追加
	//(注意)前面・背面を考慮する場合、AddRange を先に実行したコントロールの方が前面に来る
	this.Controls.AddRange(mButton);
	this.Controls.AddRange(mTextBox);
}

//ボタンのクリック
private void Button_Click(object sender, EventArgs e)
{
	int intIndex = (int)((System.Windows.Forms.Button)sender).Tag;
	MessageBox.Show("上から" + (intIndex + 1).ToString() + "番目のテキストの中身は" + mTextBox[intIndex].Text + "です。");
}


--------------------------------------------------------------------------------
VB.NET

Public mButton(4) As System.Windows.Forms.Button
Public mTextBox(4) As System.Windows.Forms.TextBox

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Dim intLoop As Integer

    'ボタンコントロールのインスタンス作成し、プロパティを設定する
    For intLoop = 0 To 4
        'インスタンス作成
        mButton(intLoop) = New System.Windows.Forms.Button
        mTextBox(intLoop) = New System.Windows.Forms.TextBox

        '各種プロパティ設定
        mButton(intLoop).Name = "Button" & intLoop.ToString()
        mButton(intLoop).Text = "Button" & intLoop.ToString()
        mButton(intLoop).Size = New Size(150, 30)
        mButton(intLoop).Location = New Point(10, 10 + 40 * intLoop)
        mButton(intLoop).Tag = intLoop

        mTextBox(intLoop).Name = "TextBox" & intLoop.ToString()
        mTextBox(intLoop).Text = "TextBox" & intLoop.ToString()
        mTextBox(intLoop).Size = New Size(150, 30)
        mTextBox(intLoop).Location = New Point(170, 15 + 40 * intLoop)
        mTextBox(intLoop).Tag = intLoop

        '以下はデフォルトで設定されているので不要だが念のため設定
        mButton(intLoop).Enabled = True
        mButton(intLoop).Visible = True
        mTextBox(intLoop).Enabled = True
        mTextBox(intLoop).Visible = True

        'イベントの関連付け
        AddHandler mButton(intLoop).Click, AddressOf Me.Button_Click
    Next

    'フォームにコントロールを追加
    '(注意)前面・背面を考慮する場合、AddRange を先に実行したコントロールの方が前面に来る
    Me.Controls.AddRange(mButton)
    Me.Controls.AddRange(mTextBox)
End Sub

'ボタンのクリック
Private Sub Button_Click(ByVal sender As System.Object, ByVal e As EventArgs)
    Dim intIndex As Integer = CInt(sender.Tag)
    MsgBox("上から" & (intIndex + 1).ToString() & "番目のテキストの中身は" & mTextBox(intIndex).Text & "です。")
End Sub

サンプルソースのダウンロード


ソースのダウンロード


TOP.NETWindowsForm → This Page
Valid CSS!