1

我会尽量简洁但易于理解。我有一个 PictureBox 元素的动态二维数组,它们都通过以下方式添加到同一个表单中:

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

现在我设计了一个算法来确定点击了哪些 PB,但我已经将它放在 ParentForm_MouseClick 方法中。现在我遇到了一个悖论。我创建的算法返回正确的输出,但 ParentForm_MouseClick 方法仅在我单击窗体中的空白区域时调用,而不是在我单击 PictureBoxes 时调用。所以我的问题是 - 当用户单击表单中的任何位置时,我如何调用 ParentForm_MouseClick 方法,即我可以以某种方式覆盖 PictureBoxes 的 MouseClick 事件,以便调用 ParentForm_MouseClick 吗?

编辑:这只是发生在我身上,我是否可以创建一个自定义 PictureBoxClass 类来扩展 .NET 类并覆盖 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 回答