0

新しいウィンドウを呼び出すときに、開いているウィンドウを閉じるにはどうすればよいですか? つまり、一度に必要な子ウィンドウは 1 つだけです。マルチウィンドウを許可しません。

public partial class Main_Usr : Form
    {
        public Main_Usr()
        {
            InitializeComponent();
            this.IsMdiContainer = true;

            if (Program.IsFA) barSubItem_Ordre.Visibility = DevExpress.XtraBars.BarItemVisibility.Never;

            Ordre_Liste f = new Ordre_Liste();
            f.MdiParent = this;
            f.Show();
   }

        private void barButtonItem_CreateOrdre_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            Program.AllerRetour = "Ordre Aller";
            Ordre_Fiche f = new Ordre_Fiche();
            f.MdiParent = this;
            f.Show();
        }

        private void barButtonItem_OrdreListe_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            Ordre_Liste f = new Ordre_Liste();
            f.MdiParent = this;
            f.Show();
        }

        private void barButtonItem_CreateOrdRet_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            Program.AllerRetour = "Ordre Retour";
            Ordre_Fiche f = new Ordre_Fiche();
            f.MdiParent = this;
            f.Show();
        }
    }
4

3 に答える 3

1

疑似マスターページを実装するには、さまざまな方法があります。

  • 任意のレイアウトで BaseForm フォームを作成できます。次に、この BaseForm から他のフォームを継承し、カスタム コンテンツを提供します。
  • 任意のレイアウトで MainForm フォームを作成できます。次に、コンテンツ コントロールを UserControls として作成し、パネルに表示します。
  • 必要なレイアウトで MasterUserControl を作成できます。次に、MasterUserControl から継承してコンテンツ コントロールを作成します (レイアウトは同じになります)。次に、メイン フォームをブラウザとして使用して、ページなどのさまざまなコンテンツ コントロールを表示します。

例:

  1. フォームに目的のレイアウトを作成しますMain_Usr
  2. MdiContainer として設定しないでください
  3. 一部のコントロールにアクセスする場合 (子フォームのフッターやヘッダーなどModifiers、それらのコントロールのプロパティを保護に設定します)
  4. フォーム コードを開き、フォームOrdre_Listeから継承するように変更します。Main_UsrForm
  5. Ordre_Listeフォームにカスタム コンテンツを追加する

出来上がり!あなたは「マスターページ」を持っています

更新 (3 番目のオプションの場合)

  1. 名前を付けて新しいユーザー コントロールを作成するMasterUserControl
  2. このコントロールで目的のレイアウトを作成し、カスタム コンテンツ用のスペースを確保します (TableLayoutPanels は使用しないでください - デザイナーの継承に問題があります)。
  3. 名前で新しいユーザー コントロールを作成しHomeUserControl、それを変更してMasterUserControl.
  4. デザイナーを開きHomeUserControl、カスタム コンテンツを追加します。protectedまた、修飾子を持つ親コントロールを変更することもできます。
  5. メインフォームの場所HomePageUserControl

コントロール (別名ページ) 間のナビゲーションを実装するには、さまざまな方法があります。最も簡単な方法 - メイン フォームにメニューを表示します。他の方法 - マスター コントロールでイベント 'Navigate' を定義し、メイン フォームでそのイベントをサブスクライブし、'ページ' から発生させます。

于 2012-04-25T14:07:00.303 に答える
1

クラス レベルで Form インスタンスを作成します。その後、イベントまたはメソッドからそれらにアクセスできます。

    Form1 f1;
    Form2 f2;

void OpenForm1()
{
    f1 = new Form1()
    f1.Show();
}

void OpenForm2()
{
    f1.Dispose(); //or Hide if you want to show it again later
    f2 = new Form2();
    f2.Show();
}
于 2012-04-25T13:56:35.810 に答える
0

お気に入り:

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

foreach (Form f in Application.OpenForms)
    openForms.Add(f);

foreach (Form f in openForms)
{
    if (f.Name != "Menu")
        f.Close();
}

最初の foreach ループでそれらを閉じよう (または破棄) しようとすると、エラーが発生するため、それらを直接閉じないでください。そのため、それらをリストに入れてそこで閉じる必要があります。

于 2012-04-25T14:02:16.447 に答える