1.在某个函数中
public ShowForm()
{
Form1 frm = new Form1();
frm.Show();
}
执行两次ShowForm()
怎么防止Show出两个相同的窗体?
2.如果把frm改成外部变量
Form1 frm;
public ShowForm()
{
frm = new Form1();
frm.Show();
}
又怎么防止Show出两个相同的窗体

解决方案 »

  1.   

    再定义一个新的Form1对象Form1 frm = new Form1;
    Form1 frm2 = new Form1;
    //也可以是
    //Form1 frm[int] = new Form1
      

  2.   

    用单例模式
     可以只让窗口只能show出一个来
     
      

  3.   

    哦 ,刚看到防止重复显示……frm.ShouDialog();即可
      

  4.   

    就是把Form实力申明为全局变量
    SHOW的时候现判断实例化没·····实例化就不SHOW ·····释放的时候要把实力=null
      

  5.   


    ShouDialog()可是个好东西,用对话框打开或者参考http://blog.csdn.net/knight94/archive/2006/05/24/752783.aspx(程序以及窗体运行的唯一性汇总)
      

  6.   

    bool isExist;
                Mutex MyMutex = new Mutex(true, "ccv", out isExist);
                if (isExist)
                {
                    frm = new Form1(); 
                      frm.Show(); 
                }
                else
                {
                    MessageBox.Show("此程序已在运行!");
                    Application.Exit();
                }   
    这样试试
      

  7.   

    单件模式:private newForm : Form1 ;public void ShowForm( )
    {
        if ( newForm == null ) 
           newForm = new Form1();
        newForm.Show();
    }
      

  8.   

    写个完整点的吧!    public partial class MainForm : Form
        {        public MainForm()
            {
                InitializeComponent();
            }        private void button1_Click(object sender, EventArgs e)
            {
                Form1 newForm = Form1.Instance();
                newForm.Show();
            }
        }
        public partial class Form1 : Form
        {
            private static Form1 _Instance;        private Form1()
            {
                InitializeComponent();
            }        public static Form1 Instance() //实例化的时候使用此静态函数
            {
                if (Form1._Instance == null)
                    Form1._Instance = new Form1();
                return Form1._Instance;
            }        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
            {
                Form1._Instance.Dispose();
                Form1._Instance = null;
            }
        }