【发布时间】:2013-10-01 21:02:12
【问题描述】:
我有三个不同的事件:
form_load
button_click
pnlTiles_Paint
我的按钮点击事件:
private void btnUpdate_Click(object sender, EventArgs e)
{
pnlTiles.Paint += pnlTiles_Paint;
}
我的 form_load 事件:
private void frmMain_Load(object sender, EventArgs e)
{
pnlTiles.Paint += pnlTiles_Paint;
}
现在我的问题是,当我在 form_load 中使用它时会调用该事件,但是当我在按钮事件中使用它时;它只是跳过了事件,我在调试按钮单击时尝试进入事件。但是我在试图弄清楚为什么没有从按钮调用事件方面没有取得任何进展。
【问题讨论】:
-
这些语句不调用事件——它们订阅事件。那是非常不同的。
-
因此,只有当您订阅的
Paint事件被触发时,您的处理程序才会被调用。 -
回复:
"I have three different events"- 不,您有三个不同的事件处理程序。 -
是的,如果可能的话,您最好使用 Paint 中的代码创建一个单独的函数,然后从 Load 和 Click 事件中调用该函数。在您的代码中,您实际上将 Panel 的 Paint 事件订阅到 pnlTiles_Paint。而且我认为当表单自己绘制时会触发 Paint 事件(面板也必须自己绘制)。
-
这并不能解释为什么它在加载事件而不是按钮事件中起作用