我有第一個表單,用戶爲他/她自己設計一個酒店。在從創建的樓層中點擊創建的房間後,用戶將信息引入到從第一個窗體打開的第二窗體以預留該房間。當單擊第二個窗體上的按鈕時,窗體應該消失,將數據發送到第一個窗體,然後將其保存到第一個窗體的文件中。如何返回到以前的表單,不會丟失數據
我的問題是,當我試圖隱藏或關閉第二個窗體時,它要麼退出應用程序,要麼隱藏該窗體。
任何人都可以告訴我如何關閉第二個窗體,返回到第一個窗體而不會丟失組合框中的任何數據,任何按鈕,任何文本或任何信息示例。
代碼明智的,這就是我必須在Program.cs中:
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Form1 myStart = new Form1();
if (myStart.ShowDialog() == DialogResult.OK)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
else
{
Application.Exit();
}
}
而這正是我試圖把在關閉第二種形式的按鈕,但它不工作:
Form2Reservations f2 = new Form2Reservations();
f2.Close();
,我也試過:
var main = new Form1();
main.Show();
main.BringToFront(); , but it gives me a new Form1 and I do not want to lose everything that I already had in Form1.
,我也試過this.Close();
和this.Hide();
,但第一個關閉了整個應用程序,第二個只是將兩個選項卡放在工具欄上。
另外,我是C#的初學者,我沒有參加任何大學水平的課程,我只是在互聯網和教程的幫助下自學。
謝謝。
第二個編輯: 當我打開我的第二種形式我在表格1使用此代碼:
Form2Reservations f2 = new Form2Reservations();
f2.receiveDataFromForm1(typeOfRoom, numberOfTheRoom, floor);
f2.ShowDialog();
this.Hide();
編輯的changeRoom_Click看起來是這樣的:
private void changeRoomButton_Click(object sender, EventArgs e)
{
this.DialogResult = System.Windows.Forms.DialogResult.OK;
this.Close();
}
而且Program.cs中的代碼與靜態無效Main()仍然看起來相同。
我的想法如下:是否有任何機會,我沒有正確打開第二個窗體,所以當我想關閉第二個窗體時,它關閉了它們,因爲它們緊密連接,並且this.Close()
是指兩種形式?那可能嗎 ?當我打開第二個表格時,我的錯誤是否會以第一種方式出現?
你爲什麼要在按鈕中創建一個新的Form2Reservations來關閉表單?這就是你應該使用this.Close()的地方。假設按鈕關閉第二種形式是第二種形式的一部分,而不是主要形式。如果你想使用舊的數據,你不應該創建一個新的表單。你只需要關閉第二個表格,如果你從未關閉過「主」表格,它仍然應該打開。 –
@Savanna可能這不是一個很好的方法來嘗試關閉它,但我已經試過這個.Close(),它關閉了我的兩個表單,而不僅僅是第二個 –
你在哪裏放置按鈕/代碼按鈕關閉?在Form1或Form2Reservations中?如果它在form1中,它將關閉整個事物,如果它在form2reservations中,它應該只關閉該窗口。這是當你使用它時,「這個」是指什麼的問題。 –