Как я могу перемещаться между формами - PullRequest
8 голосов
/ 24 июня 2011

Я новичок в C # и форме окна я делаю проект и сталкиваюсь с какой-то проблемой

  1. как я могу перемещаться по формам в окне (у меня есть полоска меню, при нажатии на нее будет отображаться пункт «Бренд», поэтому, когда я нажимаю на него, он должен открываться в окне, я не хочу, чтобы что-то использовалось mdiparent / container, у меня есть form1 и form2, затем я помещаю полосу меню в form1, что есть что-то внутри form1, если использовать mdiparent / container, содержимое / вещь form1 заблокирует form2)

2.i я использую приведенный ниже код, и проблема в том, что я хочу закрыть форму1, которую я нажимаю на «Бренд» в полосе меню ... но как ???

public partial class Form1 : Form
{
    //  i put the menu strip in form1 design
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
    }

    private void Check_Click(object sender, EventArgs e)
    {
        Form2 Check = new Form2();
        Check.Show();
    }
}

Ответы [ 3 ]

20 голосов
/ 24 июня 2011

Вы не можете просто закрыть Form1, так как это основная форма, но вы можете скрыть это.Используйте this.Hide().

private void Check_Click(object sender, EventArgs e)
{
    Form2 Check= new Form2();
    Check.Show();
    Hide();
}

[РЕДАКТИРОВАТЬ]

Не уверен, если это то, что спрашивают.Но ...

Существует много способов реализации навигации между формами, например:

В Form1:

private void button1_Click(object sender, EventArgs e)
{
    Form2 form2 = new Form2();
    form2.Tag = this;
    form2.Show(this);
    Hide();
}

В Form2:

private void button1_Click(object sender, EventArgs e)
{
    var form1 = (Form1)Tag;
    form1.Show();
    Close();
}
4 голосов
/ 24 июня 2011

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

Первоначально что-то вроде ниже

this.panel.Controls.Clear();
this.panel.Controls.Add(new UserControl_For_Form1());

Как только пользователь щелкнет какой-то другой выбор в меню.

this.panel.Controls.Clear();
this.panel.Controls.Add(new UserControl_For_Form2());

Если вы действительно хотите использовать тот способ, который используете в данный момент.Ниже поможет код.

Добавьте свойство Form1 для Form2 и выполните синтаксический анализ экземпляра form1 в Form2 с его конструктором.

public partial class Form2 : Form
    {
        private Form1 form1;

        public Form2(Form1 myForm)
        {
            InitializeComponent();
            form1 = myForm;
        }
    }

Отображение form2 и скрытие form1.

private void Check_Click(object sender, EventArgs e)
{
    Form2 Check= new Form2(this);
    Check.Show();
    Hide();
}

В закрытии события form2 теперь вы можете показать экземпляр form1, который находится в form2, и закрыть форму 2.

Использование MDI form - еще один вариант для вас.

0 голосов
/ 09 сентября 2018

Прошло 7 лет с тех пор, как этот вопрос был задан, но я хочу дать ответ на тот случай, если кто-то все еще ищет решение. Если вы используете DevExpress, вы можете добавить Navigation Frame в вашу программу. Вы можете переключаться между различными компонентами, такими как GridControl, GroupBox и так далее. Таким образом, вам не нужно создавать дополнительную форму для навигации между формами.

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