我正在使用方法在我的面板上绘制一些东西,当我通过按钮调用此方法时它会绘制,但是当我在Form_Load
上调用此方法时,它不会绘制任何内容。当我调试它时,它实际上没有任何问题地通过代码,但它仍然不会绘制任何东西。
Form_Load
事件中找到:
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
事件吗?答案 0 :(得分:0)
正如汉斯帕斯特所提到的,你无法利用那些尚未存在的东西。 解决方案:创建后绘制。
Invalidate();
不起作用,因为绘图方法中的变量发生了变化(这就是为什么每个调用事件都发生Index
更改的原因。)
使用Load
事件,而不是使用Shown
事件。这将在表单上绘制线条:
private: System::Void SelectElementForm_Shown(System::Object^ sender, System::EventArgs^ e)
{
if (ElementList->Count > 0)
{
Index = 0;
DrawLinesInLayout();
}
}