显示默认窗体

本文关键字:窗体 默认 显示 | 更新日期: 2023-09-27 18:32:30

在我使用 MDI 并且它工作正常之前,我可以在 MainForm 中显示我的 ListForm。现在我不想使用 MDI,它不起作用。

之前,与 Mdi:

public partial class Le_MainForm : DevExpress.XtraEditors.XtraForm
    {
        public Le_MainForm()
        { 
            InitializeComponent();
            this.IsMdiContainer = true;
            this.Name = "MainUSER";
            if (Program.IsFA) barButtonItem_OrdList.Visibility = DevExpress.XtraBars.BarItemVisibility.Never;
            Liste_Ordres f_Liste = new Liste_Ordres();
            f_Liste.MdiParent = this;
            f_Liste.Show();
        }


        private void barButtonItem_ListeOrdres_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            Close_AllForm();
            Liste_Ordres f_Liste = new Liste_Ordres();
            f_Liste.MdiParent = this;
            f_Liste.Show();
        }
        private void barButtonItem_CreatOrdreAller_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            Close_AllForm();
            Program.AllerRetour = "Ordre Aller";
            Fiche_Ordre f_Fiche = new Fiche_Ordre();
            f_Fiche.MdiParent = this;
            f_Fiche.Show();
        }

现在,在我消除了 Mdi //this.IsMdiContainer = true;之后

以及从 MainForm 继承的所有窗体:

public partial class Liste_Ordres : Le_MainForm
    {
    .....

我无法在 MainFrom 中显示我的 ListeForm

public partial class Le_MainForm : DevExpress.XtraEditors.XtraForm
    {
        public Le_MainForm()
        { 
            InitializeComponent();
            //this.IsMdiContainer = true;
            this.Name = "MainUSER";
            if (Program.IsFA) barButtonItem_OrdList.Visibility = DevExpress.XtraBars.BarItemVisibility.Never;
            Liste_Ordres f_Liste = new Liste_Ordres();
            // f_Liste.MdiParent = this;
            f_Liste.Show();
        }

有人知道吗?

显示默认窗体

如果希望 MainForm 类似于母版页,则可以仅使用 MainForm,并将所有其他蒙版设计为控件,而不是窗体。

好的,我想我想到了一种方法来打开初始化的继承表单。首先,在我的 MainForm 中,我在任何函数之外创建了一个整数:

private int a = 1;

然后,对于我的主窗体,我创建了一个受保护的虚拟on_Load事件:

protected virtual void Le_MainForm_Load(object sender, EventArgs e)
{
    if (a == 1)
    {
        Liste_Ordres frm = new Liste_Ordres();
        frm.Show();
        a = 0;
    }
}

接下来,在我的继承形式中,我覆盖了on_Load事件:

protected override void Form1_Load(object sender, EventArgs e)
{
}

这至少在不使用 Mdi 的情况下打开了两个表单(尽管以一种相当圆润的方式),但现在另一个问题仍然存在:当两个窗体都打开时,MainForm 会在继承前面打开(无论您是否尝试使用函数 BringToFront() 和 SendToBack())。

也许当我弄清楚这个问题时(如果我这样做了),那么我会编辑这个答案,但现在这是结束。希望这有效!