Когда я открываю вторую форму в первой, она работает неправильно (С#)

У меня в проекте две формы (простая игра для детей). Первый — это меню «Пуск», а второй — игра. Теперь, когда я нажимаю «Новая игра», я хочу, чтобы вторая форма открывалась внутри первой. Я сделал это, используя следующий код:

  private Form activeForm = null;
        private void openChildForm(Form childForm1)
        {
            if (activeForm!=null)
            {
                activeForm.Close();
            }
            activeForm = childForm1;
            childForm1.TopLevel = false;
            childForm1.FormBorderStyle = FormBorderStyle.None;
            childForm1.Dock = DockStyle.Fill;
            panel1.Controls.Add(childForm1);
            panel1.Tag = childForm1;
            childForm1.BringToFront();
            childForm1.Show();


        }

Теперь вторая форма открывается внутри первой, но работает некорректно. Во второй форме у меня есть окно с изображением, которое должно двигаться, когда пользователь нажимает одну из клавиш со стрелками. Но он не будет двигаться.

Любые предложения, что мне делать?

P.S. Я новичок, и это школьный проект. Мой учитель показал нам только один способ открытия формы:

Form2 objForm2 = new Form2();
objForm2.Show();

но так как это очень уродливый метод выполнения работы, я хотел сделать его лучше.

Я использую Visual Studio 2019


person O'Connor    schedule 07.04.2020    source источник
comment
А что уродливого в использовании Show()? И если вы хотите сделать это panel1.Controls.Add(childForm1);, вы должны создать пользовательский элемент управления, а не форму.   -  person Zer0    schedule 07.04.2020
comment
Вы можете искать либо ShowDialog();   -  person Emanuele    schedule 07.04.2020
comment
Спасибо за ответы. Под уродством я имел в виду то, что если я открою таким образом свою вторую форму, то у меня на экране появятся 2 формы (что для меня некрасиво). И я также могу скрыть первое после показа второго, но это кажется неправильным (я не хочу, чтобы пользователь видел, что открывается другое окно, а последнее исчезает).   -  person O'Connor    schedule 07.04.2020


Ответы (1)


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

person Jannes Ströhlein    schedule 07.04.2020
comment
Спасибо за ответ Яннес. Я посмотрю что я могу сделать. - person O'Connor; 07.04.2020