3

プログラムでc#Windowsプログラムでピクチャーボックスを作成します。Tagプロパティの値を割り当てます。テスト目的で、そのタグ番号をプログラムで印刷したいと思います。だから私はこれを試してみます:

private void Form1_Load(object sender, EventArgs e)
{
    pic.ContextMenuStrip = contextMenuStrip1;
    pic.ContextMenuStrip.Click += new EventHandler(this.MyPicHandler);
}

void MyPicHandler(object sender, EventArgs e)
{
    PictureBox pic = sender as PictureBox;

    MessageBox.Show(pic.Tag.ToString());
}

しかし、画像を右クリックしてメニュー項目をクリックすると、例外が発生します。「NullReferenceExceptionが処理されませんでした」「オブジェクト参照がオブジェクトのインスタンスに設定されていません。」誰かが何が起こっているのか考えていますか?

4

2 に答える 2

2

この線

PictureBox pic = sender as PictureBox;

これはのイベントハンドラであり、のイベントハンドラではContextMenuStripないため、 picをnullに設定しますPictureBox

このsenderパラメーターは、イベントハンドラーを追加したオブジェクトへの参照です。これはContextMenuStripです。

于 2010-03-27T01:47:30.590 に答える
0

pic.Tagがnullのように見えるため、.ToStringが例外を強制しています。これを行う必要があります:

if(pic.Tag != null)
    MessageBox.Show(pic.Tag.ToString());

Form1_Loadのように、タグをどこかに設定していることを確認してください。

pic.Tag = someValue;
于 2010-03-27T01:40:14.940 に答える