我想創建一個簡單的c#應用程序(我的第一次嘗試在c#所以請善待)。我創建了一個帶有文本框的表單來捕獲一個「認證碼」,然後驗證這個認證碼,然後一個webclient獲取一個xml文件,將這個認證碼傳遞給請求。發回的數據被解析爲e.c.t.c#初始化後的第二個窗體關閉
我想要做的是一旦xml返回並且我做了檢查以驗證它是否正常。我想關閉第一個窗體並加載第二個窗體,我將以一種漂亮的格式以編程方式添加顯示xml數據所需的窗體組件。
我的問題是,我無法讓第二種形式保持開放(毫無疑問,以錯誤的方式調用第二種形式)。這是我有什麼:
// close current form
this.Close();
//open new form
xmlViewForm xmlView = new xmlViewForm();
xmlView.Show();
我敢肯定,你已經發現了現在正在犯的錯誤。但僅僅爲了完整性陳述明顯,它關閉第一種形式,打開第二種形式,然後立即退出程序(第二種形式明顯閃爍一秒鐘)。
我已經嘗試了一些事情,但他們沒有工作,使用Application.Run(new xmlViewForm());
(包括替代的實例化類和使用方法show()
顯然你知道不工作,現在我做太多,但我不明白C#甚至遠程足以明白爲什麼。
感謝所有幫助:)
謝謝基思,這正是我需要的。我正要問Sean爲什麼你不能關閉它,如果有一種解決方法(我目前的應用程序可以很好地隱藏它,但我可以想象更大的應用程序需要關閉主窗口來限制資源使用,除非它們使用一個空表格作爲主控制器並立即隱藏)。你的解釋是完美的,我討厭知道如何修理某些東西,但不知道修理工作的原因,不讓我不在哪裏。 – Lee
「主要形式」沒有什麼特別之處。它恰好通常是你入口點方法的最後一行。你可以在你的Application.Run(Form)調用之後運行額外的代碼,這樣說關閉表單'嚮應用程序發出用戶想要關閉整個程序的信號'是誤導性的。 – Mufaka
包括OP在內的六人認爲我是對的。你是唯一一個在我的答案中發現問題的人。多次調用'Application.Run()',或者在一次調用Run()之後調用除清理代碼之外的任何東西都是錯誤的代碼。假設OP沒有遵循你的建議,當主窗體關閉時,消息泵到Windows將被關閉,程序將繼續超出對Run()的調用,通常會立即從主方法返回,如App.Run ()是最後一行。你的回答錯了。像專業一樣處理它,並從中學習而不是報復。 – KeithS