C++ cli 图纸形式为荷载C和x2B+/CLI
我用一个方法在我的面板上画东西,当我通过一个按钮调用这个方法时,它会画东西,但当我在C++ cli 图纸形式为荷载C和x2B+/CLI,c++-cli,paint,form-load,C++ Cli,Paint,Form Load,我用一个方法在我的面板上画东西,当我通过一个按钮调用这个方法时,它会画东西,但当我在Form\u Load上调用这个方法时,它不会画任何东西。当我调试它时,它实际上会毫无问题地遍历代码,但仍然不会绘制任何内容 下面您可以看到表单加载和按钮点击事件: private: System::Void SelectElementForm_Load(System::Object^ sender, System::EventArgs^ e) { if (ElementList->Count &
Form\u Load
上调用这个方法时,它不会画任何东西。当我调试它时,它实际上会毫无问题地遍历代码,但仍然不会绘制任何内容
下面您可以看到表单加载
和按钮点击
事件:
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
Invalidate()代码>不起作用,因为绘图方法中存在更改的变量(这就是为什么每个调用事件中都有索引更改的原因)
不要使用Load
事件,而是使用所示的事件。这将在表格上绘制线条:
private: System::Void SelectElementForm_Shown(System::Object^ sender, System::EventArgs^ e)
{
if (ElementList->Count > 0)
{
Index = 0;
DrawLinesInLayout();
}
}
是的,保留原始代码是毫无意义的。将像素飞溅到尚未可见的窗口是浪费时间。删除它。当需要再次运行绘制事件时调用Invalidate()。@Hans Call Invalidate()对我不起作用,它只是重新绘制了我的第一个绘制事件。我的Paint
事件中有一些变量在按下按钮时会发生变化。通过使用显示的事件而不是加载
事件解决了这个问题