winform程式中介面的跳轉問題

來源:互聯網
上載者:User

標籤:

 首先是我們進行視窗間的跳轉,尤其注意的是winform程式裡面的空間都是中安全執行緒的。但是注意的是如果你在一個線程中操縱另外的控制項,這時候會提示你一個錯誤,這個錯誤的解決方案準備單獨的在另一篇文章中來講。

   好了,這時候回到主題上吧,怎麼來實現介面間的跳轉吧!假設我們想要從Form1跳轉到Form2,那麼可以有以下的集中方法:

  1. 使用form的show屬性(註:show彈出來的是普通無模式表單,與下個要講的ShowDialog是有區別的)

     Form2 frm=new Form2();

     frm.show();

     this.close();          //this 這兒是Form1對象,例如在跳轉到Form2後關閉釋放所持有的資源 

     this.Dispose();        //這也是為了釋放資源

   註:Dispose()也是用來釋放資源的,但是不同的是如果表單屬於多重文件介面應用程式的一部分且是不可見的,那麼Close將不會釋放表單,從而我們必須自己手動調用Dispose來釋放表單資源。

      還有要注意的是在無模式表單上調用Close方法時候,不能調用Show方法使得表單可見,因為表單的資源已經被釋放。所以若是要隱藏表單,那麼可以調用Control.Hide方法。

 

2.使用form的ShowDialog屬性

   Form2 frm=new Form2();

   frm.ShowDialog();

   this.Dispose();

   使用ShowDialog和show產生的表單到底有什麼不一樣呢?呵呵,其實ShowDialog彈出的表單是一種有模式的對話方塊,並且當前活動的表單為彈出的視窗的持有人。

   表單和對話方塊要麼是有模式的,要麼是無模式的。“模式”表單或對話方塊必須關閉或隱藏,然後才能繼續使用應用程式的其餘部分

   還有注意的是在多線程裡面,調用用showdialog方法可以避免線程的錯誤,具體原因也不是很清楚。 

 

3.可以在Program.cs中做手腳

  我們知道,Program裡面的程式是配置了我們整個應用程式的進入點。那麼就修改吧,

  將以下的本來的代碼注釋掉:   
       Application.EnableVisualStyles();
       Application.SetCompatibleTextRenderingDefault(false);
       Application.Run(new logForm());

   改成:

       Form logFrm = new logForm();              //為第一個顯示的表單
        if (logFrm.ShowDialog() == DialogResult.OK)
        {
              Application.Run(new MainForm());    //為第二個要彈出的表單
                
        }

   然後只要在要跳轉的程式碼片段寫如下:

        this.DialogResult = DialogResult.OK;      //this 指向的是logForm

  這樣就OK了。

winform程式中介面的跳轉問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.