首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

诚心求教,在TreeView中只new一次FORM怎么实现

2013-07-11 
诚心求教,在TreeView中只new一次FORM如何实现本帖最后由 u010466340 于 2013-07-06 16:43:34 编辑public p

诚心求教,在TreeView中只new一次FORM如何实现
本帖最后由 u010466340 于 2013-07-06 16:43:34 编辑

  public partial class MainForm : Form
    {
        public MainForm()
        {
            InitializeComponent();
        }
 private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
        {
            switch (e.Node.Name)
            {
                case "Node1":
                    Form1 F1 = new Form1();
                    F1.TopLevel = false;
                    F1.FormBorderStyle = FormBorderStyle.None;
                    F1.WindowState = FormWindowState.Maximized;
                    panel显示.Controls.Add(F1);
                    F1.Show();
                    break;

                case "Node2":
                    Form2 F2 = new Form2();
                    F2.TopLevel = false;
                    F2.FormBorderStyle = FormBorderStyle.None;
                    F2.WindowState = FormWindowState.Maximized;
                    panel显示.Controls.Add(F2);


                    F2.Show();
                    break;

                case "Node3":
                    Form3 F3 = new Form3();
                    F3.TopLevel = false;
                    F3.FormBorderStyle = FormBorderStyle.None;
                    F3.WindowState = FormWindowState.Maximized;
                    panel显示.Controls.Add(F3);
                    F3.Show();
                    break;
            }
        }
    }



我现在想Form1,Form2,Form3 都只new一次,下次进入的时候就打开原来的form就好,请问如何实现?
[解决办法]
例如你可以写
 private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
        {
            switch (e.Node.Name)
            {
                case "Node1":
                    Form1.Show();
                    break;





private Form1 F1;

public Form1 Form1
{
  get{
     if(F1==null)
     {
                    F1 = new Form1();
                    F1.TopLevel = false;
                    F1.FormBorderStyle = FormBorderStyle.None;
                    F1.WindowState = FormWindowState.Maximized;
                    panel显示.Controls.Add(F1);
     }
     return F1;
  }   
}


这样,不管调用多少次Form1属性,都回首先判断 if(F1==null),仅仅初始化一次。

热点排行