通过一个实例来品味sender
现有一个快捷菜单(ContextMenu),是颜色的选项,ID分别为:mnuGray,mnuGreen,mnuBlue,mnuRed以及mnuPurple。以往我得做法是:每个菜单一个事件处理方法;先看看以下更高级的做法:
定义一个事件处理函数:
private void mnuItem_Click(object sender, System.EventArgs e)
{
// 获取消息的来源对象
if(sender == mnuGray) BackColor = System.Drawing.Color.Gray;
else if(sender == mnuGreen) BackColor = System.Drawing.Color.Green;
else if(sender == mnuBlue) BackColor = System.Drawing.Color.Blue;
else if(sender == mnuRed) BackColor = System.Drawing.Color.Red;
else if(sender == mnuPurple) BackColor = System.Drawing.Color.Purple;
// Checked设为false
mnuGray.Checked = false;
mnuGreen.Checked = false;
mnuBlue.Checked = false;
mnuRed.Checked = false;
mnuPurple.Checked = false;
// 设定当前的选项为Checked
MenuItem objItem = (MenuItem)sender;
objItem.Checked = true;
}
更多随想:
1:自定义EventArgs,我们可以在EventArgs中保存有用的信息;
2:再想想,呵呵。