как открыть дочернюю форму MDI из другой дочерней формы MDI - PullRequest
0 голосов
/ 06 ноября 2019

У меня есть форма со свойством "MDI-контейнер", установленным в значение true, которое открывает дочерние элементы MDI при нажатии Labels на MenuStrip, но у меня есть две проблемы:

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

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

После этого абзаца я покажу соответствующие частимой код и некоторые вещи, которые я пробовал (без решений)

//Event of the MenuStrip that opens an MDI child (homePage or sellProduct) from the MDI container

HomePage homePage = null;
SellProduct sellProduct = null;

private void HomeToolStripMenuItem_Click(object sender, EventArgs e)
{
    if (homePage == null)
    {
        homePage = new HomePage();
        homePage.TopLevel = false;
        homePage.MdiParent = this;
    }

    homePage.Show();
}

private void ToolStripSellPtoduct_click(object sender, EventArgs e)
{
    if (sellProduct == null)
    {
        sellProduct = new SellProduct();
        sellProduct.TopLevel = false;
        sellProduct.MdiParent = this;
    }

    sellProduct.Show();
}

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

private void MainPage_Load(object sender, EventArgs e)
{
    if (homePage == null)
    {
        homePage = new HomePage();
        homePage.TopLevel = false;
        homePage.MdiParent = this;
    }
    homePage.Show();
}

И это весь код, который я считаю необходимым для первой проблемы (Я не могу открыть дочернюю форму MDI от другого, используя мой MenuStrip). Если вам понадобится что-нибудь из моего кода, я предоставлю его.

Во второй проблеме (я не могу открыть дочернюю форму MDI из другой из кода) Я пытаюсь открыть дочернюю форму MDI "HomePage" издругой «SellProduct» при нажатии кнопки, расположенной в последней:

public partial class SellProduct : Form
{
    public SellProduct()
    {
        InitializeComponent();
        }

            private void Button_Sale_Click(object sender, EventArgs e)
            {
                HomePage homePage = new HomePage();
                homePage.show();
                this.close();
            }
        }
    }
}

Приведенный выше код закрывает MDI-форму SellProduct, показывая mdiparent (но он не выполняет снова родительский mdi, а MenuStrip по-прежнему выполняетне работает, странно) и открывает родительский MDI (где на самом деле работает MenuStrip). Так что нет, это не открывает другого ребенка, это просто странные вещи.

И это все, спасибо за ваше время, любая помощь приветствуется, и надеюсь, что у вас будет отличный день (:.

1 Ответ

0 голосов
/ 11 ноября 2019

Я наконец-то решил это, вот мое решение:

Задача 1) Как только я открываю MDI Child, я не могу открыть еще один;Я нажимаю разные метки на той же самой MenuStrip, которую я нажал, чтобы открыть текущий дочерний элемент MDI, и ничего не происходит.

Решение: дочерние формы MDI не показывались, потому что мне пришлось скрыть открытую (изMainPage) перед отображением другого.

Проблема 2) Я не могу открыть дочернюю форму MDI из другой дочерней формы MDI из кода.

Решение: Это то же самоепроблема как первая Если текущая отображаемая форма не скрыта, новая не может быть показана, из-за этого вам нужно скрыть текущую, а затем открыть новую:

//In this case I want to show the HomePage
this.Hide();
HomePage homePage = new HomePage();
homePage.Show();
...