我需要我的程序幫助。所以我有com端口連接(gps設備),當程序啓動時,我希望能夠顯示Form2,直到gps eventhandler被觸發。 同樣的事情,當設備開始向我發送數據時,有一段時間設備無法提供給我數據。我在那段時間怎麼知道我需要再次顯示Form2?如何在等待事件觸發時顯示一個窗體屏幕
這有點複雜的解釋。
這是我迄今爲止所做的。所以當Form1加載時,我正在顯示一個Form2屏幕,它基本上表示我正在等待顯示的信號。 現在我怎麼能把這個放在某種循環或類似的東西中,這將會一直在檢查eventhandler是否被觸發,同時我正在顯示這個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
}
那麼爲什麼不直接在事件處理程序觸發時關閉窗體呢?那是他們的全部目的。他們在觸發事件時運行代碼。有一個等待狀態改變的無限循環是一個壞主意。 – Doomsknight
@Doomsknight以及如何在不觸發時再次顯示它。例如汽車進入隧道信號丟失,但我需要激活form2,這將說沒有信號 –
@Doomsknight也許我可以以某種方式檢查事件是否觸發了幾秒鐘? –