-1
我使用方法在我的面板上畫一些東西,當我通過一個按鈕繪製按鈕時調用此方法,但是當我在上調用此方法時,它不繪製任何內容。當我調試它時,它實際上是通過代碼沒有任何問題,但它仍然不會畫任何東西。在Form_Load上繪圖C++/CLI
下面你可以看到和Button_Click
事件:
private: System::Void SelectElementForm_Load(System::Object^ sender, System::EventArgs^ e)
{
if (ElementList->Count > 0)
{
Index = 0;
DrawLinesInLayout();
}
}
和按鈕
private: System::Void btnLeft_Click(System::Object^ sender, System::EventArgs^ e)
{
if (ElementList->Count > 0)
{
if (Index + 1 > 1)
{
Index--;
DrawLinesInLayout();
}
else
{
Index = ElementList->Count - 1;
DrawLinesInLayout();
}
}
}
當我使用它工作時,我的形式彈出Paint-event
。但後來我在我的程序中得到了兩次代碼,這有點沒用。
所以我的問題是:
- 爲什麼沒有被正確使用我的方法我和Form_load中我的按鈕是什麼?
- 我可以通過單擊按鈕來調用
Paint
事件嗎?
是的,保留原始代碼是毫無意義的。將像素噴濺到尚不可見的窗口是浪費時間。刪除它。當需要再次運行Paint事件時調用Invalidate()。 –
@Hans調用Invalidate()不適用於我,它只是重繪我的第一個'Paint'事件。我在我的'Paint'事件中有一些變量,當我按下按鈕時會發生變化。 – Bart
使用'Shown'事件來解決它,而不是'Load'事件 – Bart