Rifath apps Ответов: 1

Только элементы управления верхнего уровня могут иметь владельца.


я использовал инструменты Metro. и я также создал родительскую форму Mdi. когда я передаю "родительскую форму" в "дочернюю форму", появляется сообщение об ошибках. например, "только элементы управления верхнего уровня могут иметь владельца"

как исправить эту проблему? пожалуйста, дайте мне решение

using MetroFramework.Forms;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using BillingSystem.Presentation;

namespace BillingSystem.Presentation
{
    public partial class frmMainMenu : MetroForm
    {
        public frmMainMenu()
        {
            InitializeComponent();
        }
        public void LoadForm(MetroForm frm)
        {
            frm.MdiParent = this;
            frm.WindowState = FormWindowState.Maximized;
            frm.BringToFront();
            frm.Show();                               
        }
        private void frmMainMenu_Load(object sender, EventArgs e)
        {
           
        }
    
        private void metroButton2_Click(object sender, EventArgs e)
        {
            try
            {
                LoadForm(new frmAddInvoice());
                this.WindowState = FormWindowState.Maximized;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }        
    }
}


Что я уже пробовал:

Ошибка отображается в "frm. show ()"...

1 Ответов

Рейтинг:
2

Dave Kreskowiak

Вы используете MDI для цели, для которой он не предназначался. Судя по коду, который вы разместили, вам вообще не нужен MDI. MDI также в значительной степени устарел.

MDI был предназначен для таких приложений, как редакторы, где у вас есть несколько открытых документов одновременно, но все документы являются одним и тем же редактором. Это как иметь несколько открытых блокнотов, но в одном приложении.

Что такое "Метроформ"? Не похоже, что это реальная форма.


Rifath apps

я использовал Metro framework. так что я должен изменить форму как метроформа.

Dave Kreskowiak

Это сторонний фреймворк, который вы используете. Вы лучший источник информации и поддержки по этому вопросу-это создатель фреймворка.

Я никогда не использовал его, и, честно говоря," исправления", которые я видел в сети для этого, - это все" хаки " к исходному коду платформы Metro.

Вы можете попытаться установить для свойства TopLevel формы значение True, но я понятия не имею, как это повлияет на форму или поведение вашего приложения.

frm.MdiParent = this;
...
frm.TopLevel = true;
frm.Show();

Rifath apps

Не успех.. я пробовал это тоже как "frm. TopLevel=false".. и я пробовал у некоторых разработчиков, но безуспешно, спасибо за ваши отзывы...

ibrahim ali asgher

Если вы нашли решение, пожалуйста, обновите его.