プロが教えるわが家の防犯対策術!

Visual C# 2008にて

int a = 3;
pictureBox(a).Image = Properties.Resources.Icon1_2;
みたいな代入の方法がどうしても解りません

Properties.Resources.Icon1_2は
リソースのIcon1_2.bmpです

過去のQ&A
QNo6332332を読んでも解りません。

pictureBoxを貼り付けてダブルクリック
Tagを1.などに設定

private void pictureBox1_Click(object sender, EventArgs e)
{
PictureBox pict = sender as PictureBox;
MessageBox.Show(pict.Name);
MessageBox.Show(pict.Tag.ToString());
int picb = int.Parse(pict.Tag.ToString());

pictureBox(picb).Image = Properties.Resources.Icon1_2;

}

上のようにしたい
アドバイスをお願いできませんでしょうか

A 回答 (2件)

以下のどれかによって書き方が違います。



・実はpictureBoxの配列だった
  pictureBox[a].Image = // 配列なら()じゃなくて[]

・pictureBox1~ といっぱい作ってある
  qa6332332のやり方をする
  GetPictBox(a).Image = Properties.Resources.Icon1_2;


// qa6332332っぽい関数
private PictureBox GetPictBox( int index )
{
PictureBox pictRet;
try
{
pictRet = (PictureBox) this.Controls["pictureBox" + index.ToString()];
return pictRet;
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
return null;
}
}
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます
うまく作動しました。
ドットマトリクスLED 8x8ドットを
デザインするプログラム(pictureBox64個)を
製作する予定です
個数があるのでpictureBox[a].Image = // 配列 ???も
考えてみます。

お礼日時:2013/05/08 22:17

質問者様がTagを使用されるとのことですので、提示されたコードを用います。


(int picbは、pictureBox1の場合には、「1」とし、名称と一致するものとします。)

「pictureBox(picb).Image = Properties.Resources.Icon1_2;」を以下のように変更します。

Control c = this.Controls["pictureBox" + picb.ToString()];
((PictureBox)c).Image = Properties.Resources.Icon1_2;
(一度、Control型で定義し、PictureBox型にキャストした上で、アイコンを代入します。)

なお、本コードでは、対象となるpictureBoxが見つからなかった場合、エラーとなってしまいます。
try~catch~によるエラー処置が必要となります。
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます
うまく作動しました。

お礼日時:2013/05/08 21:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!