【发布时间】:2021-08-26 16:42:11
【问题描述】:
我正在使用 Winforms 编写一个 C# 应用程序,我需要根据我从组合框中的选择收集一些数据。我还有一个启用数据收集的开始按钮和一个停止数据收集的停止按钮。
这是我现在能做的:
通过在组合框上切换我的选择(一次一个通道)来测量所有通道的所有数据。过程如下:选择一个通道-启动按钮单击-等待数据收集-停止按钮单击
但这是我想在代码中执行的操作: 选择一个频道 - 点击开始按钮 - 等待数据收集 - 点击停止按钮 切换到下一个频道 - 点击开始按钮 - 等待数据收集 - 点击停止按钮 ...... 重复这个过程直到完成。
我的问题是:我应该采取什么措施来实现这一目标? 我一直在尝试使用 startButton.PerformClick( ) 来启用按钮,但是,我需要在启动和停止之间停止几秒钟以等待数据收集。
您可能会问为什么,因为这样做效率很低,但由于某种原因,第三方的 DLL 无法同时从所有通道收集数据。所以我必须手动从组合框切换我的频道选择,以便一次收集所有数据。
如果您有任何建议,请告诉我。
private void timer_Tick(object sender, EventArgs e)
{
startButton.PerformClick();
}
private void timer2_Tick(object sender, EventArgs e)
{
stopButton.PerformClick();
}
private void checkAll_CheckedChanged(object sender, EventArgs e)
{
int i = 0;
while (i != 40) //there are a total of 40 channels
{
System.Windows.Forms.Timer mytimer = new System.Windows.Forms.Timer();
mytimer.Interval = 5000;
System.Windows.Forms.Timer mytimer2 = new System.Windows.Forms.Timer();
mytimer2.Interval = 7000;
mytimer.Start();
mytimer.Tick += new EventHandler(timer_Tick);
mytimer2.Start();
mytimer2.Tick += new EventHandler(timer2_Tick);
physicalChannelComboBox.SelectedIndex = i;
i++;
Thread.Sleep(5000);
}
}
【问题讨论】:
-
通常您希望将代码从按钮单击处理程序中移出到方法中。然后,您只需从按钮单击事件和代码中的任何其他位置调用该方法。无需模拟输入
-
您如何知道该频道的数据何时被收集?
-
@hijinxbassist 谢谢你的建议。我知道数据是被收集的,因为我将它存储到一个打印通道值的数据表中,所以我能够绘制它。我正在实时读取连续样本。