我有一种方法可以禁用或启用某些自定义控件,然后使用图形对象绘制直线和矩形。
方法的要点:
void MyMethod()
{
//...
mycontrol.enabled = false;
mycontrol.visible = false;
mycontrol.Invalidate();
mycontrol.Update();
GraphicsObject.DrawLines();
//...
}
此方法返回后,屏幕看起来很棒。我有一些矩形和线条,其中曾经是控件。
但是,click事件处理程序返回后(调用上面的方法)。应该是不可见的控件在线条和矩形上绘制(留下那些区域的空白 - 与背景形式相同的颜色)。
有什么方法可以解决这个问题吗?
由于
答案 0 :(得分:1)
正如我在评论中提到的,如果您在使用OnPaint方法或Paint Event时正在绘制对象,则不会自动重绘您的自定义绘图。根据您所使用的内容,您可以执行类似的操作(我假设您正在使用表单)。
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);
}