我在窗口某个固定位置画了个固定大小的矩形,最小化后在看会消失,有人告诉我如果不消失可以在Paint事件中重绘,问题是,那个固定位置有时候有那个矩形,有时候没有,我就不知道在Paint事件中什么条件下重绘了。有办法判断那个地方存在矩形,只是最小化后消失了吗?

解决方案 »

  1.   

    不管有没有,在Paint事件下重绘了就可以了。
      

  2.   

    刷新就可以了!
    private void DrawBorder(System.Drawing.Graphics g)//绘制边框
    {
        g.DrawRectangle(this.BorderPen,0,0, this.Viewer.Width + 1, this.Viewer.Height + 1);
    }private void Viewer_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
    {
        if (IsDrawBorderRect == true) DrawBorder(e.Graphics);
    }测试:
    DrawBorderClick事件
    {
      IsDrawBorderRect = true;
      this.Viewer.Refresh();
    }UndrawBorderClick事件
    {
      IsDrawBorderRect = false;
      this.Viewer.Refresh();
    }
      

  3.   

    Paint事件里面按原方法重绘。
      

  4.   

    做个标志,第一次画时为stag="1"
    if(stag=="1")
    {
      No ReDraw
    }
    else
    {
      ReDraw
    }then clear:
    set stag=0
      

  5.   

    我是在一个label控件四周画小矩形,证明我选择了它,
    我窗口上有几个label控件。
    几个控件的标志会互相影响的!
      

  6.   

    重写这个控件onpaint及鼠标事件
      

  7.   

    我用标志的方法解决了,但是占用了paretn.tag的值!
    我实际上在做一个类似于可视化设计器的东西,点击到某个用户控件就选择了它(四周画矩形框)!
    谢谢大家,如果谁可以不用标志的方法,可以继续发言!!!
      

  8.   

    若只能选一个,用一个变量记录当前选择对象就可以了,
    若能多选,就要一个LIST了。