Как загрузить форму в панель другой формы - PullRequest
0 голосов
/ 27 января 2020

У меня есть форма frmTest1 с разделенным контейнером с двумя панелями. Панель 2 должна загружать множество форм по одной за раз. Он отлично работает для первой формы, но вторая форма не может загрузить третью форму в панель 2 из frmTest1.

Вот раздетый код frmTest 1:

namespace Project1
{
public partial class frmMain3 : Form
{
    public frmMain3()
    {
        InitializeComponent();
    }

    private void btnShowTest1_Click(object sender, EventArgs e)
    {
        showScreen(new frmTest1());
    }

    public void showScreen(Control ctl)
    {
        while (splitContainer1.Panel2.Controls.Count > 0)
            splitContainer1.Panel2.Controls[0].Dispose();

        if (ctl is Form)
        {
            var frm = ctl as Form;
            frm.TopLevel = false;
            frm.FormBorderStyle = FormBorderStyle.None;
            frm.Visible = true;
        }
        ctl.Dock = DockStyle.Fill;
        splitContainer1.Panel2.Controls.Add(ctl);
    }
}
}

Код второй формы ниже:

namespace Project1
{
public partial class frmTest1 : Form
{
    public frmTest1()
    {
        InitializeComponent();
    }

    private void btnShowTest4_Click(object sender, EventArgs e)
    {

        frmMain3 main = new frmMain3();
        main.showScreen(new frmTest4()); //Nothing shows
    }
}
}

Из проведенного мною исследования кажется, что решение состоит в том, чтобы использовать пользовательский контроль, но я никогда не использовал его раньше, я борюсь. Может кто-нибудь, пожалуйста, покажите мне, как решить эту проблему?

1 Ответ

0 голосов
/ 27 января 2020

Пожалуйста, попробуйте использовать UserControl. Просто измените базовый класс frmMain3 на «UserControl» и удалите весь «if (ctl is Form)» - часть из showScreen ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...