【问题标题】:C Sharp Event HandlerC Sharp 事件处理程序
【发布时间】:2014-06-19 12:11:12
【问题描述】:
private void button1_Click(object sender, EventArgs e)
{
    Button source = (Button)sender;
    MessageBox.Show("The message inside the button is " + source.Text);
}

我正在关注 C sharp 事件处理程序的教程,我是 Python 用户,

public static void Main()
{
    Message myMessage = new Message();
    myMessage.ShowMessage += new MessageHandler(myMessage.DisplayMessage);
}

我现在有点知道创建类的新实例的基本语法,但我不明白为什么第一行中的 Button 有一个括号。这两个代码之间有什么区别?

【问题讨论】:

    标签: c# event-handling


    【解决方案1】:

    在 c# 中,每个类都继承自 object 类。因为Object 是一个父类,它可以用来实例化任何子类。所以在这里,当我们收到一个object 类实例时,我们希望它是一个Button,所以我们将它解析为一个Button 对象

    private void button1_Click(object sender, EventArgs e)
    

    这里sender被指定为对象类型变量。

    Button source = (Button)sender;
    

    这里将对象变量sender解析为Button对象并保存在Button类型变量中

    【讨论】:

      【解决方案2】:

      这里 (Button) 用于将 object sender 转换为 button 类型,因为您需要 button 中的类型。在第二个示例中,正如您提到的它创建 Message 类的实例。

      欲了解更多信息,请通过此

      http://msdn.microsoft.com/en-IN/library/ms173105.aspx

      Typecasting in C#

      【讨论】:

        【解决方案3】:

        sender 是一个object。为了获得按钮的Text 属性,其点击处理程序是button1_Click,您必须将sender 转换为Button 类型的对象,以便稍后获得source.Text

        实际上,sender 是操作所针对的控件。因为 .NET 中的所有类型都继承了基类型 System.Object,所以为了获得按钮的特定属性,您必须将 sender 强制转换为 Button 类型的对象。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-11-25
          • 1970-01-01
          • 2018-01-25
          • 1970-01-01
          相关资源
          最近更新 更多