2011-06-24 21 views
6

之間我在C#和窗口形式 我在做一個項目newbiest和我遇到一些問題我如何可以瀏覽形式

  1. 我怎樣才能瀏覽窗口中的形式(我有一個菜單條,當點擊它會顯示一個項目「品牌」,所以當我點擊它,它應該打開窗口內,我不想使用mdiparent /容器的東西,我有form1和form2,然後我把菜單條form1,form1中有一些東西,如果使用mdiparent /容器,form1的內容/東西會阻止表單2)

2.i使用下面的代碼和問題是我想關閉form1,我點擊菜單欄中的「品牌」...但如何?

public partial class Form1 : Form 
{ 
    // i put the menu strip in form1 design 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
    } 

    private void Check_Click(object sender, EventArgs e) 
    { 
     Form2 Check = new Form2(); 
     Check.Show(); 
    } 
} 

回答

17

你不能只是關閉Form1,因爲它的主要形式,但可以將其隱藏。使用this.Hide()

private void Check_Click(object sender, EventArgs e) 
{ 
    Form2 Check= new Form2(); 
    Check.Show(); 
    Hide(); 
} 

[編輯]

不知道這是什麼要求。但是......

有很多方法來實現形式之間的導航,例如:

Form1

private void button1_Click(object sender, EventArgs e) 
{ 
    Form2 form2 = new Form2(); 
    form2.Tag = this; 
    form2.Show(this); 
    Hide(); 
} 

Form2

private void button1_Click(object sender, EventArgs e) 
{ 
    var form1 = (Form1)Tag; 
    form1.Show(); 
    Close(); 
} 
+0

如果您可以說如何從Form2導航回Form1而不創建Form1的新實例(因爲它處於隱藏模式) – Coder323

+0

@ Coder323 - 我沒有意識到這是問題所在。更新了答案。 –

+0

我確信提問者在返回Form1時會遇到問題,只是想幫助....感謝您的代碼..... – Coder323

2

我想你應該創建usercontrols而不是不同的形式。然後,您可以根據菜單中的選項將您的用戶控件添加到主面板中。

最初類似下面

this.panel.Controls.Clear(); 
this.panel.Controls.Add(new UserControl_For_Form1()); 

一旦用戶點擊菜單中的一些其他的選擇。

this.panel.Controls.Clear(); 
this.panel.Controls.Add(new UserControl_For_Form2()); 

如果您真的想要使用您目前使用的方式。以下代碼將有所幫助。

爲Form2添加Form1屬性並使用其構造函數將Form1實例解析爲Form2。

public partial class Form2 : Form 
    { 
     private Form1 form1; 

     public Form2(Form1 myForm) 
     { 
      InitializeComponent(); 
      form1 = myForm; 
     } 
    } 

顯示form2並隱藏form1。

private void Check_Click(object sender, EventArgs e) 
{ 
    Form2 Check= new Form2(this); 
    Check.Show(); 
    Hide(); 
} 

在form2關閉事件現在您可以顯示窗體1中的form1實例,並關閉form2。

使用MDI form是另一種選擇。

相關問題