问一个Button1_Click()的问题?
在页面上点击Button1,就会触发Button1_Click()事件,地球人都知道吧?
那么这个触发事件执行的机制是什么?
[解决办法]
你的 asp:button 控件里不是设置了 onclick= "Button1_Click "
这是一种查找函数的方式
还有一种方式
就是 asp:button 里不写 onclick
而在 cs 里用事件委托机制
Button1.Click += new System.EventHandler(this.Button1_Click);
两种方式效果一样
[解决办法]
onclick= "Button1_Click "
实际上在生成页面的时候
由于 asp:button runat= "server "
编译器会去找 cs 里的 Button1_Click
然后通过事件委托把这个方法给 Button1 的 Click 事件
事件委托简单来可理解成一种函数的指针
让按钮的某个事件在发生时去根据指针访问对应的方法
[解决办法]
PostBack带2个参数,其中第一个就是是哪个控件Post的。。。
[解决办法]
委托建立的时候就为特定控件指定了事件处理程序
当然
如果你是多个控件指向一个事件处理程序
通过 sender 来判断
private void HandleClickEvent(object sender, EventArgs e)
{
Button myButton = sender as Button;
// 接着判断 myButton.ID 属性就知道是哪个按钮激发的了
}
[解决办法]
.net 中就是 事件委托机制 MSDN 里有很详细的说明
不明白你想如何深究其原理?
[解决办法]
建议看 Inside C#