none
Form切換的問題 RRS feed

  • 問題

  • 各位 我遇到一個很奇怪的問題 就是

     

    假設我有三個Form  FormA、FormB、FormC

    因為每個Form都是一個Class

    所以如果我在Form A 要去 開啟 FormB的話

    我一定要 FormB B = new FormB();  B.Show();

    這樣FormB才會出現,問題來了,常常會發生關閉FormB之後FormA也不見了

    或是   A 開啟 B , B再開啟C, 將C關閉或是隱藏之後,應該會看到B啊,

    可是都只看到A,找不到FormB

    難不成 我在 C.Hide() 或 C.Close();之後還要 new 一個 FormB才可以嘛??

    有誰知道問題呢??

     

    2006年11月30日 上午 06:28

解答

  • HI,

    FormB關閉之後應該會看到FormA, 您可以先到[設定 | 記憶體 | 執行中的程式]找看看程式是否還在執行中, 確定一下不是您所寫的程式的問題

    tihs

    2006年12月1日 上午 12:55

所有回覆

  • HI,

    FormB關閉之後應該會看到FormA, 您可以先到[設定 | 記憶體 | 執行中的程式]找看看程式是否還在執行中, 確定一下不是您所寫的程式的問題

    tihs

    2006年12月1日 上午 12:55
  • 程式確實還在執行 ,從FormA 開啟 FormB,

    但是FormB.Show()執行完之後,畫面似乎會跑到FormA之後,

    不管你用FormB.Activate(); 或是 FormB.BringToFront();

    結果都是一樣,出非你把FormB的 TopMost設成true,否則都沒有用  非常奇怪。

    2006年12月1日 上午 03:10
  • HI,

    那您可以改成呼叫FormB.ShowDialog()試試看

    tihs

    2006年12月2日 上午 02:15
  • 問題我不知, 說一下我的用法;

    例: 我有 Form1, Form2, Form3;

    Form1 有控制項可以開啟 Form2 and Form3;

    在 Form1 開啟 Form2 用:

                Form2 frm2;
                frm2 = new Form2(this);
                frm2.Show();
                Visible = false;

     

    Form 2 建構式有改:

            protected Form frmMain;  //記住 Form1 的變數
            public Form2(Form mainform)
            {
                InitializeComponent();
                frmMain=mainform;
            }

    Form2 跳回 Form1:

                frmMain.Visible=true;
                Dispose();

    參考一下......

    另外若你需要多畫面可以考慮使用 Panel 控制項.

    *************************************************************

    額外問一下:

    我會這樣用是因會有連結好幾個資料庫, 每次僅開其中一個. 若是使用 Panel 會將所使用

    資料庫一起開, 控制項也不少. 想說若將每個資料庫連結到特定的Form, 且每次都僅有單一資料

    庫在使用. 關閉時就整個 Form Dispose. 可以清除所有連結.

    我的問題是:

    1. 這樣的想法對嗎?

    搞不太清楚系統產生的資料庫程式碼是否會這樣運作. 即 Dispose 後結束所有資料庫聯結,

    並放掉所有資料庫資源(ex. DataSet, BindingSource......);

    我是直接用系統產生的 BindingSource 聯結控制項.

     

    2. 會較省 PDA 上的資源嗎?

    即 .Net CF 在Dispose 後再產生新 Form(即 Form2 關閉後再從 Form1開啟 Form3), 在記憶體的處理

    上會先回收不用的還是跟系統要新的. 在PDA 上的執行策略是什麼?

     

     

    2006年12月3日 上午 12:36
  •  

    我後來查了一下 show 和 showdialog的不同

    但是非常奇怪的 我用showdialog和show控制權都會被

    mainform搶回去,一下子又跳回mainform,把TopMost設成true

    但是還是這樣的狀況,只差沒整個form跳回去,

    就是FormB上面的標題都會變成mainform上面的標題

    要點一下FormB才會變回FormB的標題,但一下子又變回去

    我已經快把mainform 所有的程式的標示為說明了

     不知道有人知道這是什麼情形嘛??

    2006年12月6日 上午 01:24
  • 謝謝各位  我已經找到問題了
    2006年12月6日 上午 02:44
  • 大大.....請教最後是如何解決這個問題的 ? 關於表單切換也困擾小弟許久.

    開開關關好像是可以...但是只能成功一次 , close 後就再也開不起來ㄌ

    而且執行速度好慢好慢ㄚ

    2008年5月8日 上午 03:09
  •  

    有點忘記了   印象中好像是這樣

     

    FormA A = new FormA();

    DialogResult R = A.ShowDialog();

    A.Dipose();

     

    您試試看

    2008年5月8日 上午 03:16
  • 一種模仿遊戲迴圈的FORM切換方式

    需要用到指標

    可以任意切換到指定的FORM不佔資源

    一種特殊的Form/表單/視窗之間切換的教學範例

    2013年4月12日 上午 10:37