private void button1_Click(object sender, EventArgs e)
{
Button source = (Button)sender;
MessageBox.Show("The message inside the button is " + source.Text);
}
我正在关注C sharp的Event Handler教程,我是一名Python用户,
public static void Main()
{
Message myMessage = new Message();
myMessage.ShowMessage += new MessageHandler(myMessage.DisplayMessage);
}
我现在知道创建类的新实例的基本语法,但我不明白为什么第一行中有一个Button的括号。这两个代码之间有什么区别?
答案 0 :(得分:4)
在c#中,每个类都继承自object
类。因为Object
是父类,它可以用于实例化任何子类。所以当我们收到object
类实例时,我们希望它是Button
,因此我们将其解析为Button
对象
private void button1_Click(object sender, EventArgs e)
此处sender
被指定为对象类型变量。
Button source = (Button)sender;
此处,对象变量sender
被解析为Button
对象并保存在Button
类型变量
答案 1 :(得分:2)
此处(按钮)用于将对象发送者强制转换为按钮类型,因为您需要按钮中的类型。在第二个例子中,你已经提到了它创建Message类的实例。
有关详细信息,请参阅此
答案 2 :(得分:1)
sender
是object
。为了获得按钮的Text
属性,其单击处理程序为button1_Click
,您必须将sender
强制转换为Button
类型的对象,以便稍后获取source.Text
。
实际上,sender
是该操作的控件。因为.NET中的所有类型都继承了基类型System.Object
,所以为了获得按钮的特定属性,必须将发送方强制转换为Button
类型的对象。