gpt4 book ai didi

c# - 如何在等待事件触发时显示一个表单屏幕

转载 作者:太空宇宙 更新时间:2023-11-03 14:01:20 28 4
gpt4 key购买 nike

我的程序需要帮助。所以我有 com 端口连接(gps 设备),当程序启动时,我希望能够显示 Form2,直到 gps eventhandler 被触发。同样,当设备开始向我发送数据时,有时设备无法向我提供数据。到时候我怎么知道我需要重新展示Form2?

这个解释起来有点复杂。

这是我到目前为止所做的。因此,当加载 Form1 时,我会显示一个 Form2 屏幕,它基本上表示我正在等待信号出现。现在我怎样才能把它放在某种循环或类似的东西中,它总是检查要触发的事件处理程序,同时我正在展示这个 form2。

如果您需要更多解释,请告诉我。

代码如下:

private void Form1_Load(object sender, EventArgs e)
{
//open the com port when loading form
comport.Open();

Form2 my_form2 = new Form2();
my_form2.ShowDialog();
}

这是 GPS 信号的事件处理程序:

GPS.PositionReceived += new NmeaInterpreter.PositionReceivedEventHandler(GPS_PositionReceived);

这是 GPS 功能:

private void GPS_PositionReceived(string Lat, string Lon)
{
arrLon = Lon.Split(new char[] { '°', '"' }, StringSplitOptions.RemoveEmptyEntries);
dblLon = double.Parse(arrLon[0]) + double.Parse(arrLon[1], new System.Globalization.NumberFormatInfo()) / 60;
deciLon = arrLon[2] == "E" ? dblLon : -dblLon;

//some more code
}

最佳答案

那么为什么不在事件处理程序触发时关闭表单呢?这就是他们的全部目的。

它们在触发时运行代码。

有一个等待状态改变的不确定循环是个坏主意。

private void GPS_PositionReceived(string Lat, string Lon)
{
arrLon = Lon.Split(new char[] { '°', '"' }, StringSplitOptions.RemoveEmptyEntries);
dblLon = double.Parse(arrLon[0]) + double.Parse(arrLon[1], new System.Globalization.NumberFormatInfo()) / 60;
deciLon = arrLon[2] == "E" ? dblLon : -dblLon;

//some more code

// LOAD FORM 1
// CLOSE THIS FORM (FORM 2)
}

关于c# - 如何在等待事件触发时显示一个表单屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10654512/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com