我在Button的Click()方法中,发件人是Button对象。我想访问所述Button的ActualWidth成员,但是当我输入" sender。"对于IntelliSense选项,我得到以下内容:
1)这些选项是什么,以及2)为什么我没有得到以下内容,这正是我所期待的?
3)如何在调试器中通过发件人访问ActualWidth?
编辑:
在立即窗口中,将发件人转换为按钮无效:
答案 0 :(得分:2)
这是因为您正在访问事件中的按钮对象,并以object
的形式接收该按钮对象。
private void button1_Click(object sender, EventArgs e)
//^^^^^^^^^^^^
{
}
这些方法(Equals,GetHashCode,ToString,GetType)可用于object
类,这就是您只看到这些方法的原因。
因为.NET Framework中的所有类都派生自Object, Object类中定义的每个方法都可用于所有对象 在系统中。
(另见:Not everything derives from object - Eric Lippert)
要将对象用作Button
,您必须将其强制转换为按钮对象,如:
private void button1_Click(object sender, EventArgs e)
{
Button button = sender as Button;
if (button != null)
{
//use properties
}
}
对于您的即时窗口:
投射时你没有使用()
,像以下一样使用它:
((Button)sender).
答案 1 :(得分:1)
您必须将sender
投射到Button
类型。当它进来时它是object
类型。