有个方法是drawdifnet(wht,Nt)
这样画的
但问题是我希望它使用计时器输出每一行(如动画)
我尝试解决我的问题:
1)如果我这样做
timer1->Enabled = true;
timer1->Tick += gcnew EventHandler(drawdifnet(wht,Nt));
timer1->Start();
timer1->Stop();
然后一个错误
2) 我将我的参数添加到事件中,是的,它编译但不是每秒构建。这就是我的意思(我们drawdifnet将方法的所有代码都扔到事件处理程序中Tick)
private: System::Void timer1_Tick(System::Object^ sender, System::EventArgs^ e,double** wht,int Nt)
{
for (int j = 1; j < Nt - 1; j++)
{
for (int i = 1; i < Nt; i++)//Было Nx
{
chart2->Series["" + (j + 1).ToString()]->Points->AddXY(i, wht[j][i]);
}
}
在那之后,我已经在 main 方法中启动了计时器(但仍然没有任何东西是顺利和动画地构建的)
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
{
///---Остальные рабочие функции---///
timer1->Enabled = true;
timer1->Start();
}
更新! 在声明所有方法之前
int ik, jk;
更改勾号
private: System::Void timer1_Tick(System::Object^ sender, System::EventArgs^ e, double** wht, int Nt)
{
chart2->Series["" + (jk + 1).ToString()]->Points->AddXY(ik, wht[jk][ik]);
ik++;
if (ik == Nt)
{
ik = 1;
jk++;
if (jk == Nt - 1)
timer1->Stop();
}
}
拨电至Button_Click
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
{
///Остальной Код
ik = 1;
jk = 1;
timer1->Start();
}
但是现在它根本不绘制图形。
更新-1-05-2017
在搜索和阅读了一堆示例之后,结果如下
这是代码(感谢用户 Alexander Petrov)
private: System::Void timer1_Tick(System::Object^ sender, System::EventArgs^ e,int Nt,double** wht)
{
chart2->Series["" + (jk + 1).ToString()]->Points->AddXY(ik, wht[jk][ik]);
ik++;
if (ik == Nt)
{
ik = 1;
jk++;
if (jk == Nt - 1)
timer1->Stop();
}
}
我的变量jk,ik是全局的,但Nt,wht[j][i]不是,当我将它们添加为参数时
private: System::Void timer1_Tick(System::Object^ sender, System::EventArgs^ e,int Nt,double** wht)
然后我在这一行得到以下错误(在表单构造函数中)
this->timer1->Tick += gcnew System::EventHandler(this, &TransEquForm::timer1_Tick);
错误代码 C3352:
指定的函数与委托类型不匹配
在主按钮(所有内容所在的位置)中,我留下了这些行,因为根据互联网上的示例判断,timer-Enabled=true;事件何时开始timer_Tick
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
{
timer1->Interval = 2000;
timer1->Enabled = true;
}

制作变量
i,j表单字段。当您在 中启动定时器时
button1_Click,将它们设置为并删除该行
timer1->Enabled = true;,因为这也会启动计时器。在事件处理程序中
timer1_Tick写入:这不是循环
for。切换到 C#,你的问题将挤满可以回答的人。您将在这里获得异步代码,并与
Task您一起......