1

私は徹底的に調査しましたが、それでもこれに対する最良の解決策を見つけることができません..私は3つのボタン、BACK - HOME - FORWARDを持っています..

これは、ブラウザの左上にあるボタンのようなものです..フォームでこれを実行しようとしています..

私が持っているのはこれです..

戻るボタンのコードは

private void button1_Click(object sender, EventArgs e)
{
    this.Hide();
}

// simply hiding the form .. so that the previous form will be shown.. 

ホームボタンのコードはこれです。

private void button2_Click(object sender, EventArgs e)
{
    for (int i = Application.OpenForms.Count - 1; i >= 0; i--)
    {
        if (Application.OpenForms[i].Name != "HomePage")
            Application.OpenForms[i].Close();
    }
} 

// this will show the HomePage form and close other forms whos name is not "HomePage"

問題は、戻るボタンを押すと、それを隠すことです..以前に閉じたフォームまたは非表示のフォームをボタンで再度開くにはどうすればよいですか?

あなたが私を助けてくれることを願っています!ありがとう!

private void button3_Click(object sender, EventArgs e)
{
    ???????
}
4

2 に答える 2

2

もう一度開きたいフォームへの参照を保存する必要があります。

これを行うにはいくつかのオプションがありますが、ユーザーが一度だけ「進む」ことを許可したい場合は、次のようにフォームへの参照を保存できます。

internal class MyHistory {
    internal static Form LastForm;
}

// ........

private void button1_Click(object sender, EventArgs e)
{
    MyHistory.LastForm = this;
    this.Hide();
}

// ........

private void button3_Click(object sender, EventArgs e)
{
    MyHistory.LastForm.Show();
}

もちろん、これよりも包括的になりたい場合は、履歴アイテムの完全なスタックを維持し、それらを前後にトラバースすることもできます。

.Close()フォームを閉じると参照が破棄されるため、フォームを再度開くことはできません。このメソッドは.Hide()、フォームインスタンスを有効に保ち、ユーザーのビューからフォームを隠すだけである場合にのみ機能します。

于 2013-01-11T09:13:12.610 に答える
0

初期化されたすべてのフォームを保持するフォーム リストを使用できます。そうすれば、フォームを動的に非表示、表示、追加、および削除できます。

List<Form> lstForms = new List<Form>();

次に、フォームを追加すると:

Form newForm = new Form();

lstForms.Add(newForm);

フォームを隠す:

lstForms(x).Hide(); //x = index of Form you want to hide

フォームの表示

lstForms(x).Show(); //x = index of Form you want to hide

フォームの削除 (たとえば、フォームを閉じるとき)

lstForms.RemoveAt(x);

そうすれば、フォームを動的に操作でき、多くのフォームがある場合に概要を把握するのがはるかに簡単になります...

于 2013-01-11T09:27:44.907 に答える