注册事件问题,Click后为嘛进不去Paint方法?

junjian8811 2016-01-23 10:47:52
   
public partial class TestForm : Form
{

public TestForm()
{
InitializeComponent();
}

private void panel1_Click(object sender, EventArgs e)
{
panel1.Paint -= new System.Windows.Forms.PaintEventHandler(this.PnlNVR_Paint);
panel1.Paint += new System.Windows.Forms.PaintEventHandler(this.PnlNVR_Paint);
}

private void PnlNVR_Paint(object sender, PaintEventArgs e)
{
ControlPaint.DrawBorder(e.Graphics,
e.ClipRectangle,
Color.Red,//7f9db9
1,
ButtonBorderStyle.Solid,
Color.Red,
1,
ButtonBorderStyle.Solid,
Color.Red,
1,
ButtonBorderStyle.Solid,
Color.Red,
1,
ButtonBorderStyle.Solid);
}
}
...全文
198 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
junjian8811 2016-01-23
  • 打赏
  • 举报
回复
快来人啊
k_est 2016-01-23
  • 打赏
  • 举报
回复
这么说吧,你点击按钮的时候注册了事件(当panel在Paint的时候会执行事件处理函数PnlNVR_Paint),但是当你注册时间之后一直没有触发这个事件。原因就是你没有弄明白执行的顺序。在你点击按钮之前Paint已经触发了,然而之后却没有再触发过,所以进不去那个方法的。
阿通 2016-01-23
  • 打赏
  • 举报
回复
需要控件Panel的变化,才能执行。
阿通 2016-01-23
  • 打赏
  • 举报
回复
Panel中Click事件虽然执行也指向定义的Paint,但是重绘事件Paint却
john_QQ:2335298917 2016-01-23
  • 打赏
  • 举报
回复
你的 click函数 只是把事件跟相应的函数关联在一起了,关联这个动作并不是要执行相应的函数,只有当事件发生时,相应的函数才会调用,比如这个paint事件,当窗口调正大小、窗口最大化才会触发,这时关联的函数才会调用
Poopaye 2016-01-23
  • 打赏
  • 举报
回复
Paint是重绘,如果界面没有发生变化,是不会触发的
白衣如花 2016-01-23
  • 打赏
  • 举报
回复
注册事件和触发事件的区别 Click仅仅是触发事件,告知panel绘制绑定了事件Paint 所以当panel再绘制时就会进入Paint方法了 比如最小化后还原

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧