zoukankan      html  css  js  c++  java
  • C# 函数参数object sender, EventArgs e

    object sender:表示触发事件的控件对象
    EventArgs e:表示事件数据的类的基类

    在WinForm中我们经常需要给控件添加事件。例如给一个Button按钮添加一个Click点击事件。给TextBox文本框添加一个KeyPress 键盘按下事件。通过强大的IDE,双击控件就能直接添加一个该控件默认的事件。

    private void btnError_Click(object sender, EventArgs e)
    {
            //some codes here.
    }

    双击Button,自动生成的是Click事件,事件的命名是控件名字加下划线加操作名字命名的。该事件还有两个参数,一个是object类型的sender,还有一个是EventArgs类型的e。

    从英文意思来看sender和e这两个参数:

    sender:发送者

    EventArgs:事件参数 (EventArguments)

    Aggument:论点

    object:对象,基类

    sender参数用于传递指向事件源对象的引用。简单来讲就是当前的对象。例如button的点击事件,那么这个sender就代表这个button自己。

    private void btnError_Click(object sender, EventArgs e)
    {
          //获取当前点击的Button
          Button thisClickedButton = sender as Button;
    }    

    由于sender指的是事件源对象,sender是object类型,用的时候记得转一下类型才可以用。

    e参数是是EventArgs类型。简单来理解就是记录事件传递过来的额外信息。一般用于传递用户点击的位置啊,键盘按下的键等事件的额外信息。例如TextBox中有一个KeyPress事件。

    private void inputTextBox_KeyPress(object sender, KeyPressEventArgs e)
     {
        //获取当前对象
         TextBox tb = sender as TextBox;
    
          //获取当前按下来的键值
          char c = e.KeyChar;
     }

    在日常开发中,大多数控件都需要写触发函数,而触发函数中的两个参数 sender 和 e 的作用,就不容小视。

    看下面的例子:

    <asp:Button ID="Button1" runat="server" Text="Button1" OnClick="Button_OnClick" />
    <asp:Button ID="Button2" runat="server" Text="Button2" OnClick="Button_OnClick" />
    <asp:Button ID="Button3" runat="server" Text="Button3" OnClick="Button_OnClick" />

    在上面的程序中设计了三个Button控件,他们点击后触发的函数都为Button_OnClick;那么我如何分辨出到底是哪一个Button进行了点击呢,就要用到触发函数中的参数来判断。

        protected void Button_OnClick(object sender, EventArgs e)
        {
            Button btn = (Button)sender;
            Response.Write(btn.ID);
        }

    这时,我将类型为object的sender变量进行转型为Button后,就可以通过他的ID属性来判断。

    另一个例子:
    <asp:ImageButton ID="ImageButton1" runat="server" OnClick="ImageButton_OnClick" />
    我设计了一个ImageButton控件,进行点击操作时触发的函数为ImageButton_OnClick;

        protected void Button_OnClick(object sender, ImageClickEventArgs e)
        {
            Response.Write("X坐标:"+e.X.ToString());
            Response.Write("Y坐标:"+e.Y.ToString());
        }

    这时,我在图片上任意地方点击后,就会显示出点击时的X,Y坐标。

    但是,参数e经常是与控件的CommandName与CommandArgument属性绑定起来进行传参的。

    他们所要触发的相应操作是OnCommand而不是OnClick操作。
    <asp:Button ID="Button1" runat="server" Text="Button1" CommandName="Button1" OnCommand="Button_OnCommand"/>
    <asp:Button ID="Button2" runat="server" Text="Button2" CommandName="Button2" OnCommand="Button_OnCommand"/>
    <asp:Button ID="Button3" runat="server" Text="Button3" CommandName="Button3" OnCommand="Button_OnCommand" />

    protected void Button_OnCommand(object sender, CommandEventArgs e)
        {
            Response.Write(e.CommandName);
            Response.Write(e.CommandArgument);
        }
  • 相关阅读:
    【C/C++】动态内存分配和链表
    【C/C++】递归算法
    UnicodeMath编码教程
    UnicodeMath数学公式编码_翻译(Unicode Nearly Plain
    浅谈Java反射机制
    lvs--小白博客
    python部署lvs
    python部署galery集群
    python第九章:面向对象--小白博客
    python之yagmail模块--小白博客
  • 原文地址:https://www.cnblogs.com/yuer20180726/p/11321177.html
Copyright © 2011-2022 走看看