在Form_Load C ++ / CLI上绘图

时间:2015-09-30 10:08:45

标签: c++-cli paint form-load

我正在使用方法在我的面板上绘制一些东西,当我通过按钮调用此方法时它会绘制,但是当我在Form_Load上调用此方法时,它不会绘制任何内容。当我调试它时,它实际上没有任何问题地通过代码,但它仍然不会绘制任何东西。

您可以在下面的<{1}}和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(); } } } 时,它会在我的表单弹出时起作用。但后来我在我的程序中得到了两次代码,这有点毫无意义。

所以我的问题是:

  • 为什么我的Form_load没有正确使用我的方法而且我的按钮是?
  • 我可以点击按钮调用Paint-event事件吗?

1 个答案:

答案 0 :(得分:0)

正如汉斯帕斯特所提到的,你无法利用那些尚未存在的东西。 解决方案:创建后绘制。

Invalidate();不起作用,因为绘图方法中的变量发生了变化(这就是为什么每个调用事件都发生Index更改的原因。)

使用Load事件,而不是使用Shown事件。这将在表单上绘制线条:

private: System::Void SelectElementForm_Shown(System::Object^  sender, System::EventArgs^  e) 
{
    if (ElementList->Count > 0)
    {
        Index = 0;
        DrawLinesInLayout();
    }
}