1

簡潔ですがわかりやすいように努めます。PictureBox 要素の動的な 2 次元配列があり、それらはすべて次の方法で同じフォームに追加されます。

this.Controls.Add(PictureBoxArray[i,j]);

ここで、これらの PB のどれがクリックされたかを判断するアルゴリズムを設計しましたが、それを ParentForm_MouseClick メソッドに配置しました。そして今、私はパラドックスに到達しました。私が作成したアルゴリズムは適切な出力を返しますが、ParentForm_MouseClick メソッドは、PictureBox をクリックしたときではなく、フォームの空のスペースをクリックしたときにのみ呼び出されます。だから私の質問は - ユーザーがフォーム内の任意の場所をクリックしたときに ParentForm_MouseClick メソッドを呼び出すにはどうすればよいですか?

編集:これは私に起こりました。.NET クラスを拡張するカスタム PictureBoxClass クラスを作成し、MouseClick() イベントをオーバーライドして、以前に記述したメソッドを呼び出すことはできますか?

4

1 に答える 1

0

物事を複雑にしすぎているようです。イベント ハンドラー内のコードを別の場所から呼び出す必要がある場合は、それを別のメソッドに抽象化することをお勧めします。同じイベント ハンドラーを PictureBoxes にアタッチして、そのメソッドを呼び出すことができます。

for(int i = 0; i < PictureBoxArray.GetLength(0); i++) 
{
    for(int j = 0; j < PictureBoxArray.GetLength(1); j++)
    {
        //attach handler
        PictureBoxArray[i,j].Click += pictureBox_Click;
    }
}


void pictureBox_Click(object sender, EventArgs e)
{
   MyMethod();      
}

void parentForm_Click(object sender, EventArgs e)
{
   MyMethod();       
}

private void MyMethod()
{
   //method to be called
}
于 2013-07-28T11:17:49.417 に答える