私はC#とウィンドウフォームの初心者です私はプロジェクトをやっていて、いくつかの問題に遭遇します
2.以下のコードを使用しますが、問題は、メニューストリップの[ブランド]をクリックした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();
}
}
_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();
}
_
異なるフォームではなく、ユーザーコントロールを作成する必要があると思います。次に、メニューの選択に従って、メインパネルにユーザーコントロールを追加できます。
最初は以下のようなもの
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終了イベントで、form2にあるform1インスタンスを表示し、form2を閉じることができるようになりました。
MDIフォーム の使用はあなたのためのもう一つのオプションです。
この質問が出されてから7年が経ちましたが、誰かがまだ解決策を探している場合に備えて答えたいと思います。 DevExpressを使用している場合は、プログラムにナビゲーションフレームを追加できます。 GridControl、GroupBoxなどのさまざまなコンポーネントを切り替えることができます。したがって、フォーム間を移動するために追加のフォームを作成する必要はありません。