1

我有一种方法可以禁用或启用一些自定义控件,然后使用图形对象来绘制线条和矩形。

该方法的要点:

void MyMethod()

{

//...

mycontrol.enabled = false;

mycontrol.visible = false;

mycontrol.Invalidate();

mycontrol.Update();

GraphicsObject.DrawLines();

//...

}

在此方法返回后,屏幕看起来很棒。我在控件曾经存在的地方有矩形和线条。

但是,在单击事件处理程序返回之后(它调用了上述方法)。应该不可见的控件绘制在线条和矩形上(将这些区域留空 - 与背景表单颜色相同)。

有没有什么办法解决这一问题?

谢谢

4

1 回答 1

1

正如我在评论中提到的,如果您在对象上绘图,如果您不使用OnPaint方法或Paint 事件,您的自定义绘图将不会自动重绘。根据您所绘制的内容,您可以执行类似的操作(我假设您正在绘制表单)。

void MyMethod() 
{ 
    //... 
    mycontrol.enabled = false; 
    mycontrol.visible = false; 
    mycontrol.Invalidate(); 
    mycontrol.Update(); 
    this.Invalidate(); 
} 


private void Form1_Paint(object sender, PaintEventArgs e)
{
    //Conditional Logic to determine what you are drawing
    // myPoints is a Point array that you fill elsewhere in your program

    e.Graphics.DrawLines(new Pen(Brushes.Red), myPoints);

}
于 2012-10-05T03:10:12.677 回答