C Sharp事件处理程序


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);
}

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

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

private void button1_Click(object sender, EventArgs e)

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

Button source = (Button)sender;

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

Here (Button)用于将对象发送者强制转换为按钮类型,因为您想要键入按钮。在第二个例子中,正如你所提到的,它创建了Message类的实例。

有关更多信息,请参阅

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

c#中的类型转换

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

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

相关内容

  • 没有找到相关文章

最新更新