我在 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();
}
我的應用程式正常作業。但是當我點擊按鈕時,我的形狀消失了。
我嘗試了應用程式的發布版本,但我的問題沒有解決
uj5u.com熱心網友回復:
- 在您的面板上啟用雙緩沖。
class MyPanel : Panel
{
public new bool DoubleBuffered
{
get {
return base.DoubleBuffered;
}
set {
base.DoubleBuffered = true;
}
}
public MyPanel() :
base()
{
this.DoubleBuffered = true;
}
}
如果您在該面板上有多個子控制元件,您可能需要呼叫
SuspendLayout()
andResumeLayout()
。使用
Refresh()
而不是Invalidate()
立即更新您的控制元件。真正的原因可能是手工繪制的線條。如果您提供該代碼,人們可以對其進行改進或提供建議。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/531192.html
上一篇:索引(從零開始)必須大于或等于零且小于引數串列的大小。Sql饋送患者串列上的例外
下一篇:創建一個回傳泛型函式的函式