代码里实例化一个图片框,没加入窗体里
PictureBox S = new PictureBox();public MainForm(string[] args)
{
     InitializeComponent();
     S = A;//对上面对象赋值
}A 是拉入窗体里的图片框下面是在窗体加载时绑定事件到上面实例化的图片框Sprivate void MainForm_Load(object sender, EventArgs e)
{      this.S.MouseMove += new MouseEventHandler(S_MouseMove);
      this.S.MouseClick += new MouseEventHandler(S_MouseClick);
      this.S.MouseLeave += new EventHandler(S_MouseLeave);}这样对 S 的操作等于对 A 的操作。绑定在 S 上的事件在 A 也能起作用。 S = B;对 S 重新赋值后,对 S 的操作等于对 B 的操作,但本来绑定在 S 上的事件却不起作用了。

解决方案 »

  1.   

    事件和实例走,前面的处理,实际是在实例A上。不在B上。不明白为什么要这么做。画面上一个 PictureBox 就可以了啊。修改 PictureBox 内容就可以了,不用整个控件都换实例
      

  2.   


    实际需要,画面上两个框位置大小不一样,要切换显示。对 S 赋值后,对 S 的操作等于对 B 的操作,里面是什么原理呀?事件不是绑在 S 上的吗?是实际上绑在 A 上?还是执行上顺序的问题?
      

  3.   

    S 虽然实例化了,但 S = A 就是表示指向 A 的实例。S = new XXX 这句根本没用。PictureBox S; 这样也一样能跑。事件实际是绑定在 A 的实例上。 所谓的 S, A 都是引用,事件作用在 new XXX 出来的实例上。比方说:
    Student A = new Student("张三");
    Student B = new Student("李四");
    Student C = new Student("王五");C = B;
    C = A;C.Say("Hello");结果是 张三 在Say Hello。实例的事件和实例的方法是类似的,它们都是作用在实例上。(虽然这不是精准的说法)
      

  4.   


    那是不是说对S绑定事件后,S=A后;则事件是绑定在A上。之后再S=B,事件仍绑定在A上吗
      

  5.   

    楼主 
    s=b
    这个时候s所指向的对象就是b了
    之前 s有没有绑定事件和b没有什么关系
      

  6.   


    可是之前是先绑定事件再把A赋给S,事件有绑定到A上