みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

【C#】Nameの取得について

いつもお世話になります。
C#に関して質問です。
visualC#2008を使っています。

今、pictureboxを縦に順に表示させていくと同時に、一つ一つのpictureboxに名前を付ける処理をプログラムしています。

今度は、その名前をMessageBoxで取得するプログラムを作成しようとしているのですが、うまくいきません。

hanpuku_pic_Click_1で新しくhanpuku_picをインスタンス作成するとメッセージが空白になってしまいます。

誰か解決策をお願いします。
プログラムは下記のように書いているところです

private void hanpuku_Click(object sender, EventArgs e)
{
this.SuspendLayout();

Array.Resize(ref this.hanpuku_array, this.hanpuku_array.Length + 1);

PictureBox hanpuku_pic = new PictureBox();

hanpuku_array[this.hanpuku_array.Length - 1] = hanpuku_pic;

hanpuku_pic.Name = "hanpuku_pic" + this.hanpuku_array.Length.ToString();

hanpuku_pic.Location = new Point(xx, 90 * (hanpuku_array.Length - 1));
hanpuku_pic.BackColor = System.Drawing.SystemColors.Window;
hanpuku_pic.Size = new System.Drawing.Size(160, 70);
hanpuku_pic.BringToFront();
hanpuku_pic.Image = new Bitmap(@"C:\Documents and Settings\admin\My Documents\Visual Studio 2008\algorithm\algorithm\picture\反復箱.png");
hanpuku_pic.SizeMode = PictureBoxSizeMode.StretchImage;
hanpuku_pic.Click += new EventHandler(hanpuku_pic_Click_1);

this.ResumeLayout(false);
this.PerformLayout();
this.panel1.Controls.Add(hanpuku_pic);
}

private void hanpuku_pic_Click_1(object sender, EventArgs e)
{
MessageBox.Show(hanpuku_pic.Name);
}

投稿日時 - 2010-01-15 16:08:27

QNo.5595141

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

 こんばんは。

 恐らく、hanpuku_picはメンバ変数だと察しますが、「hanpuku_Clickイベント」内でも、ローカルで、
 PictureBox hanpuku_pic = new PictureBox();
 としている為、メンバ変数側のhanpuku_picに正しく代入されていないのではないでしょうか。
 この場合は「hanpuku_pic_Click_1イベント」の「object sender」がクリックされたピクチャーボックスを示していますので、

private void hanpuku_pic_Click_1(object sender, EventArgs e)
{
PictureBox picture = sender as PictureBox;
MessageBox.Show(picture.Name);
}

 とすれば無事に名前を取れる筈です。

投稿日時 - 2010-01-15 22:07:24

お礼

ご回答ありがとうございます。
無事解決しました!!

senderの意味がわからなかったので勉強にもなりました!
ありがとうございました

投稿日時 - 2010-01-16 16:43:13

あなたにオススメの質問