Как исправить «Изменить MdiParent в MdiChild» в C # - PullRequest
0 голосов
/ 01 апреля 2019

Мои коды для изменения MdiChild в классе MdiParent

        public void SetupMdi(Form form)
        {
            clearMdi();
            activeMdiForms.Add(form);
            form.MdiParent = this;
            form.Show();
            form.Location = new Point(0, 0);
            foreach(Form forms in activeMdiForms)
            {
                MessageBox.Show(forms.ToString());
            }
            return;
        }

        public void clearMdi()
        {
            foreach(Form form in activeMdiForms)
            {
                form.Dispose();
            }
            activeMdiForms.Clear();
            return;
        }

Он отлично работает в родительском классе

        private void Menu_Load(object sender, EventArgs e)
        {
            VersionChecker ver = new VersionChecker();
            versionLbl.Text = "Depo Stok Programı Version " + earlySettings.version;
            SetupMdi(new Login());
            GCTimer.Start();
        }

Но я вызвал метод SetupMdi из дочерней формы, его рабочая, но дочерняя форма не отображаетсяно он использует оперативную память

public partial class Login : Form
{
     public async void login()
    {
        earlySettings.usrName = obj.UserName;
        MainMenu form = new MainMenu();
        new Menu().SetupMdi(new MainMenuMdi());
        this.Dispose();
    }
}

Я попробовал ApiClass, он не работает как дочерний класс

1 Ответ

0 голосов
/ 01 апреля 2019

Но я вызвал метод SetupMdi из дочерней формы, его рабочая, но дочерняя форма не отображается, но использует ram

Если предположить, что ваш код находится в реальном MdiChild, тогда вы можете привести MdiParent свойство вашего родительского типа (я считаю, Menu?), А затем вызовите метод SetupMdi():

// ... assuming we are in an MdiChild ...
((Menu)this.MdiParent).SetupMdi(new MainMenuMdi());
...