参数PaintEventArgs对象确认正确吗? 如果正确就应该没有问题了

解决方案 »

  1.   

    不是啊我就是在Microsoft Visual Studio .NET 2003的开发环境里新建了一个控件,从System.Windows.Form.TextBox继承,然后写override的时候IDE自动给我生成了override的声明代码,肯定不会错的吧
      

  2.   

    protected override void OnPaintBackground(PaintEventArgs e)
    {
        base.OnPaintBackground(e);
    }
      

  3.   

    关键是OnPaintBackground不是主动的,必须由InvokePaintBackground来激活。private void button1_Click(object sender, System.EventArgs e)
    {
        PaintEventArgs pe = new PaintEventArgs(null,new Rectangle(0,0,100,100));
        this.InvokePaintBackground(this.MyTextBox,pe);
    }我写了一个测试程序,这样就可以激活MyTextBox的OnPaintBackground事件。
      

  4.   

    从本质来说,所有事件都是被动的,因而他们都需要被激活。
    但是象Paint事件,在某些时候不需要你写调用代码。
    比如拖动窗口发生了Paint事件,会自动调用OnPaint()。
    你当然也可以主动的调用OnPaint()函数,或者用Invoke()来激活它。事件机制是对消息机制的封装,理解了这一点,就能明白了。
      

  5.   

    是阿我在private void InitializeComponent()里面,加入了
    this.SetStyle(System.Windows.Forms.ControlStyles.UserPaint,true);
    以后就可以了但是自己写的绘图代码无论如何都不能正常运行,哎
      

  6.   

    MSDN上写OnPaint()是引发Paint 事件,难道产生重绘事件时需要先调用OnPaint()函数,再有OnPaint函数引发Paint事件,再有Paint事件调用某个事件处理函数。