2011-06-24 2 views
6

間を移動することができますどのように私は私がプロジェクトをやっているのC#や窓の形 でnewbiestと私はいくつかの問題を満たしてどのように私は、ウィンドウ内のフォームをナビゲートすることができます私はフォーム

  1. (私は、メニューストリップを持っていますクリックすると "Brand"という項目が表示されますので、クリックするとウィンドウ内で開きます。mdiparent/containerを使用したい場合は、form1とform2があります。 form1の中に何かあるものがある、mdiparent/containerを使用すると、form1の内容/ものがform2をブロックする.2)

2.iを使用するコードの下に問題がありますが、私はメニューストリップの "Brand"をクリックする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(); 
} 

[EDIT]

これが聞かれているものであるかどうかわかりません。しかし...

例えば、フォーム間のナビゲーションを実装するための多くの方法があります。Form1

Form2

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

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

Form1の新しいインスタンスを(隠しモードで)作成せずに、Form2からForm1に戻る方法を教えてもらえると便利です – Coder323

+0

@ Coder323 - これは尋ねられたことではありません。答えを更新しました。 –

+0

私はAskerが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; 
     } 
    } 

フォーム2を表示して、フォーム1を非表示にします。

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

ここで、form2 closingイベントでは、form2にあるform1インスタンスを表示し、form2を閉じることができます。

MDI formの使用は別のオプションです。

関連する問題