0

私はC#が初めてで、助けが必要です。

私がこれまでに持っているのは、C# で作成した 8 つの Windows フォームのセットです。これらのフォームには、テキスト ボックス、ラベル、ラジオ ボタンなどの基本的なものがあります。フォーム (セレクタ フォームと呼ばれます) を使用して、他の 8 つのフォームのいずれかを選択できます。いつでも、セレクターフォームを他のウィンドウの上に表示し、8 つのラジオボタン (または通常のボタンは関係ありません) を配置したいと考えています。ボタンの 1 つがクリックされると、現在のフォーム (セレクタ フォームではない) が消え、新しいフォームが表示されます。ボタンの名前は、表示される新しいフォームの名前になります。

いくつかの例を見てきましたが、これまでのコードは次のとおりです。

void Button1Click(object sender, EventArgs e)
        {
            //this.Hide();
            var form1 = new CASII();
            form1.Closed += (sender1, args) => this.Close();
            form1.Show();           
        }

        void Button2Click(object sender, EventArgs e)
        {
//          this.Hide();
            var form2 = new CCARAdmin();
            form2.Closed += (sender1, args) => this.Close();
            form2.Show();
            //Application.Run(new CCARAdmin());         
        }

私が抱えている問題は、セレクターフォームを非表示にしたくないことです。これは、開いている他のフォームを特定して閉じてから別のフォームを開く方法がわかりません。

プログラムを開始すると、ロジックは次のようになります。 セレクタ フォームの表示 ボタンがセレクタ フォームでクリックされると、セレクタ フォームを一番上に保持し、ボタンの名前で他のフォームを表示します。Selector フォームで別のボタンをクリックすると、開いていた前のフォーム (Selector フォームではない) を閉じ、ボタンの名前に対応する新しいフォームを開きます。Selector フォームを一番上に置きます。Selector フォームが閉じると、アプリケーションが停止します。

4

3 に答える 3

1

selectorForm.TopMost = true (これは、セレクター フォームを常に一番上に保つのに役立ちます)。現在開いているフォームの参照を保持するために、セレクタ フォームにフォーム変数を作成します。

1 ボタンクリックのサンプルコード:

Form frm = null;
void Button1Click(object sender, EventArgs e)
        {
            //this.Hide();
            var form1 = new CASII();
             if (frm == null)
             {
                 frm = form1;
             }
             else
             {
                 frm.Close();
             }
            form1.Show();
            this.TopMost = true;
            frm = form1;
        }
于 2013-11-12T16:09:49.590 に答える
1

私が抱えている問題は、セレクターフォームを非表示にしたくないことです。これは、開いている他のフォームを特定して閉じてから別のフォームを開く方法がわかりません。

  • Selector formTopMostTrueに設定して、常に最前面に表示します。BringToFrontまたは、新しいフォームを開いた後に使用できます
  • 開いている他のフォームを知るには、この回答を確認してください。または、各 From を Selector フォームのフィールドとして定義し、それを確認することもできます。
于 2013-11-12T16:10:18.840 に答える