我在Winforms中创建了一个应用程序,并使用了一个从Panel
扩展的自定义控件,其中包含多行,我的表单中有一个按钮。我需要当用户单击按钮时,面板中的行的颜色将发生变化。
我使用Invalidate()
方法刷新该面板以查看更改。
private void button1_Click_2(object sender, EventArgs e)
{
if (MyPanel.mycolor2 == Color.Red)
{
MyPanel.mycolor2 = Color.Blue;
}
else
{
MyPanel.mycolor2 = Color.Red;
}
MyPanel.Invalidate();
}
我的应用程序工作正常。但当我点击按钮,一会儿我的形状消失了。
我尝试发布应用程序版本,但问题未解决
1条答案
按热度按时间34gzjxbg1#
1.在面板上启用双缓冲。
1.如果该面板上有多个子控件,则可能需要调用
SuspendLayout()
和ResumeLayout()
。1.请使用
Refresh()
而非Invalidate()
立即更新控件。1.真实的的原因可能是手工绘制的线条。如果你提供了代码,人们可以改进它或给予建议。