当前位置: 代码迷 >> C# >> C# 弹出窗口的有关问题
  详细解决方案

C# 弹出窗口的有关问题

热度:89   发布时间:2016-05-05 04:38:26.0
C# 弹出窗口的问题
Form1上有一个按钮button,按下button后弹出一个新窗体Form2,语句如下:
Form2 f2 = new Form2();
 f2.Show();
Form2上有一个Textbox,给Form2输入内容(如123456)后,关闭Form2窗体,但在此按了Form1中的button按钮后,打开输入了内容(123456)的窗体,不是再次新建一个Form2窗体。
也就是如何在按了父窗体的一个按钮后打开的是同一个(或者说是已经被创建的)子窗体,而不是始终新建子窗体,怎么实现???刚学C#不久,希望懂的人解答一下。。。
------解决思路----------------------
那你就不要每次都New一个啊,把f2弄成一个全局变量,每次打开窗口前先判断f2是否为null,为null则new一个,否则直接show出来。
或者把Form2做成单例
------解决思路----------------------
全局变量 Form2 f2 = null;

父窗体按钮事件
if(f2==null)//或者判断释放
{
  f2=new Form2();
  f2.show();
}
else
  f2.show();
------解决思路----------------------
第二次不要show,而是执行
f2.Active();
------解决思路----------------------

                if (fm2 == null 
------解决思路----------------------
 fm2.IsDisposed)
                {
                    fm2 = new Form2();
                    fm2.Show();//如果之前未打开,则打开。
                }
                else
                {
                    fm2.Activate();//之前已打开,则给予焦点,置顶。
                }
------解决思路----------------------
//声明公有变量
Form2 frm = null;

//按钮Click事件
if (null == frm 
------解决思路----------------------
 frm.IsDisposed)
            {
                frm = new Form2();
                frm.Show();
            }
            else
            {
                frm.Activate();
            }

------解决思路----------------------
以前写过的一篇文章 窗体传值问题
------解决思路----------------------
首先!!Form2不应该被Close掉!!而是Hide!!
------解决思路----------------------
模态的窗口不行么?http://goobbe.com/questions/1914297/lock-a-previous-form-when-opening-a-new-one
------解决思路----------------------
设置全局窗体,关闭的时候影藏不关闭。
Form2 frm = new Form2();
        private void button4_Click(object sender, EventArgs e)
        {
            frm.Show();
        }


 private void Form2_FormClosing(object sender, FormClosingEventArgs e)
        {
            this.Hide();
            e.Cancel = true;
        }
  相关解决方案