none
請教一下,我要如何宣告一個Form讓整個系統使用 RRS feed

  • 問題

  • 不好意思,小弟想請教各位前輩一個問題
    就是系統有三個Form-Form1、Form2、Form3
    當我在Form1進行宣告:Form2 frm2 = new Form2();
    那我在Form3是否能使用frm2?
    也就是說,Fomr1和Form3都能使用同一個frm2,不用重新宣告一個Form2。
    無論在Form1或Form3,都是使用同一個frm2。

    我使用的是vs 2005 c#
    煩請前輩們為小弟解惑,謝謝!

    2007年9月4日 上午 11:59

解答

  • 你可以利用DesignPattern的singleton模式,作法如下:

     

    1.在每個Form定義一個static的私有變數與屬性

    public class Form1: Form

    {

       private static Form1 instance = null;

       public static Form1 Instance

       {

           get

           {

                 if( null==instance )

                 {

    instance = new Form1();

                 }

                 return instance;

           }

       }

    }

    Form2,Form3也比照辦理

     

    2.在你要呼叫表單的地方用下面的方式呼叫

    例如SurprisenClick事件的時候

         Form2.Instance.Show();

    2007年9月4日 下午 03:57

所有回覆

  • 我個人建議如果要達到你所要方式使用vb.net  My.Form class 很容易就能達到,如果要用c#的話你就要自已寫一個集合來存取form 。

    2007年9月4日 下午 02:15
  • 你可以利用DesignPattern的singleton模式,作法如下:

     

    1.在每個Form定義一個static的私有變數與屬性

    public class Form1: Form

    {

       private static Form1 instance = null;

       public static Form1 Instance

       {

           get

           {

                 if( null==instance )

                 {

    instance = new Form1();

                 }

                 return instance;

           }

       }

    }

    Form2,Form3也比照辦理

     

    2.在你要呼叫表單的地方用下面的方式呼叫

    例如SurprisenClick事件的時候

         Form2.Instance.Show();

    2007年9月4日 下午 03:57
  • 假設你的程式進入點是 Program.cs,舉個簡單例子

     

    using System;
    using System.Collections.Generic;


    namespace DeviceApp1
    {
        static class MainTest
        {

            public static Form1 frm1;

            public static Form2 frm2;

            public static Form3 frm3;


            [STAThread]
            static void Main(string[] args)
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                frm1= new Form1();

                Application.Run(frm1);
            }
        }
    }

     

    要在所有的程式中使用只要這樣下:

     

    DeviceApp1.MainTest.frm2 = new Form2();

     

    ..諸如此類即可達成

    2007年9月8日 下午 10:21