2

次の方法で作成された画像ボックスの配列があります。

PictureBox[] places = new PictureBox[100];

フォームにあるいくつかの画像ボックスでそれを埋める必要があります。プログラムで配列に入力する方法はありますか、または使用する必要がありますか:

places[0] = pictureBox1;
...
4

3 に答える 3

1

最初の例では、PictureBoxes を作成された順序で配列に配置することを前提としていますpictureBox1 = places[0];。2 番目の例では、Tag プロパティをインデックスとして使用して、配列に配置される順序を割り当てます。配列にコントロールを追加するために通常使用する方法。

最初の方法

private void button1_Click(object sender, EventArgs e)
{
    var places = new PictureBox[10]; // I used 10 as a test
    for (int i = 0; i < places.Length; i++)
    {
        // This does the work, it searches through the Control Collection to find
        // a PictureBox of the requested name. It is fragile in the fact the the
        // naming has to be exact.
        try
        {
            places[i] = (PictureBox)Controls.Find("pictureBox" + (i + 1).ToString(), true)[0];
        }
        catch (IndexOutOfRangeException)
        {
            MessageBox.Show("pictureBox" + (i + 1).ToString() + " does not exist!");
        }

    }
}

2番目の方法

private void button2_Click(object sender, EventArgs e)
{
    // This example is using the Tag property as an index
    // keep in mind that the index will be one less than your 
    // total number of Pictureboxes also make sure that your 
    // array is sized correctly. 
    var places = new PictureBox[100]; 
    int index;
    foreach (var item in Controls )
    {
        if (item is PictureBox)
        {
            PictureBox pb = (PictureBox)item;
            if (int.TryParse(pb.Tag.ToString(), out index))
            {
                places[index] = pb;
            }
        }
    }
 }
于 2013-08-01T02:00:16.923 に答える