读书人

诚心求教在TreeView中只new一次FORM

发布时间: 2013-07-11 15:38:46 作者: rapoo

诚心求教,在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),仅仅初始化一次。

读书人网 >C#

热点推荐