我想让一个按钮始终处在窗体的正中央
        private void Form1_Resize(object sender, EventArgs e)
        {
            button1.Left = ((Form1)sender).Size.Width / 2;
            button1.Top = ((Form1)sender).Size.Height / 2;
        }
我就在resize事件里写代码。为什么我直接写Form1.不允许访问Size属性,只有写成((Form1)sender).才可以访问?
((Form1)sender)和Form1有什么区别?

解决方案 »

  1.   

    Form1 是类名
    ((Form1)sender) 是实例这里里面可以写成 this.Size.Width / 2;
      

  2.   

    Form1是类型(所有Form1对象的模板),不是对象实例。
      

  3.   

    为什么我直接写Form1.不允许访问Size属性,只有写成((Form1)sender).才可以访问?楼主可以试试 this.Size
      

  4.   

    this 当前实例
    sender as Form1
    sender指的是事件的产生者及控件对象
      

  5.   

    你应该使用this Form1是类型,this是Form1类型的实例
    private void Form1_Resize(object sender, EventArgs e)
    sender是触发这个事件的实例,因为是Form1触发的,所以sender==this ,sender是object 类型 
    需要强制转换一下((Form1)sender)  建议采用(sender as Form1)的形式