在窗体的Paint事件里面
重新调用你的控件的Paint

解决方案 »

  1.   

    Invalidate();方法,告诉Windows此控件需要重画,重写需要重画的事件,比方 protected override void OnTextChanged(EventArgs e)
    {
    base.OnTextChanged (e);
    Invalidate();
    } protected override void OnFontChanged(EventArgs e)
    {
    base.OnFontChanged (e);
    Invalidate();
    } protected override void OnResize(EventArgs e)
    {
    base.OnResize (e);
    Invalidate();
    } protected override void OnMove(EventArgs e)
    {
    base.OnMove (e);
    Invalidate();
    }
      

  2.   

    补充一下,重画的时候不要使用 PaintEvent 里的 Rectangle , 使用 this.GetBounds 代替,原因你试试就知道了。
      

  3.   

    强制刷新Invalidate(this.ClientRectangle);
    Update();
      

  4.   

    我使用了 Clayborne(Clay) 的方法,可是当我Window窗口最大化或Window窗口被别的窗口覆盖时,还是有一些丢失,怎么一回事?
      

  5.   

    ------------------------
    我使用了 Clayborne(Clay) 的方法,可是当我Window窗口最大化或Window窗口被别的窗口覆盖时,还是有一些丢失,怎么一回事?
    ------------------------补充一下,重画的时候不要使用 PaintEvent 里的 Rectangle , 使用 this.GetBounds 代替,原因你试试就知道了。
    是不是我说的?你没看到我的补充吗?哈哈。
      

  6.   

    请问 Clayborne(Clay) ,你所讲的重画是重载哪一个方法?
      

  7.   

    你重画的是窗体吗?如果是窗体那肯定是 OnPaint 喽 OnPaintBackground 连里面的其他控件都画进去了。
      

  8.   

    Form我没有试过,我写的是一个Label,当Label的Text无法全部显示时就开始滚动文本,测试没有任何问题,窗体可能还需要考虑发生的其他事件,因为窗体是顶级容器啊。