如何在等待事件触发时显示一个窗体屏幕

本文关键字:一个 屏幕 窗体 显示 在等待 事件 | 更新日期: 2023-09-27 18:34:32

我需要程序方面的帮助。所以我有 com 端口连接( gps 设备(,当程序启动时,我希望能够显示 Form2,直到触发 gps 事件处理程序。同样的事情,当设备开始向我发送数据时,有时设备无法为我提供数据。我怎么知道在这段时间内我需要再次显示 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)
}
相关文章: