Использование кнопки / события, чтобы показать новую форму и скрыть существующую в C # - PullRequest
1 голос
/ 16 июня 2011

Я пытаюсь нажать на кнопку в форме, при этом она будет скрывать существующую форму и показывать новую, хотя у меня были проблемы, а также проблемы с "созданием" форм в разных местах на экран!

Мой код выглядит следующим образом:

private void button1_Click(object sender, EventArgs e)
{
    (new Form3()).Show();
    (new Form2()).Hide();
}

Этот код показывает новую форму в порядке, но form2 не скрывает

Ответы [ 7 ]

3 голосов
/ 16 июня 2011

Вы создаете новый экземпляр Form2 и скрываете ТО.Я предполагаю, что вы ищете это:

private void button1_Click(object sender, EventArgs e)
{
    (new Form3()).Show();
    this.Hide();
}
2 голосов
/ 16 июня 2011

Если вы хотите скрыть какую-либо форму, вам нужно вызвать метод .Hide() для соответствующего экземпляра. Например, когда вы создаете форму, вы можете сохранить ее в некоторой переменной:

Form2 form2 = new Form2();

и позже, когда вы хотите скрыть эту форму:

form2.Hide();
1 голос
/ 16 июня 2011

Код (new Form2()).Hide(); создает новый экземпляр Form2.Чтобы скрыть существующую форму, вам понадобится ссылка на нее.

1 голос
/ 16 июня 2011

Вы скрываете новую форму. Вам нужно сохранить ссылку на открытую форму и затем скрыть ее:

private void button1_Click(object sender, EventArgs e)
{
    form3.Show();
    form2.Hide();
}
private Form2 form2 = new Form2();
private Form3 form3 = new Form3();
0 голосов
/ 16 июня 2011

@ BFree's - хороший ответ. Просто для удобства вот код с Form1, имеющей две кнопки, которые переключают две другие подчиненные формы Form2 и Form3, после того как Form1_Load выполнит начальную реализацию и Show ().

Form2 f2 = null;
Form3 f3 = null;

private void Form1_Load(object sender, EventArgs e)
{
    f2 = new Form2();
    f2.Show();

    f3 = new Form3();
    f3.Show();
}

private void button1_Click(object sender, EventArgs e)
{
    if (f2.Visible)
    {
        f2.Hide();
    }
    else
    {
        f2.Show();
    }
}

private void button2_Click(object sender, EventArgs e)
{
    if (f3.Visible)
    {
        f3.Hide();
    }
    else
    {
        f3.Show();
    }
}
0 голосов
/ 16 июня 2011

Если вы пытаетесь скрыть существующую форму, (new Form2()).Hide() не сделает этого, так как это создаст новую форму из класса Form2.

Предполагая, что Button1 находится в форме, которую вы хотите скрыть, вы хотите:

private void button1_Click(object sender, EventArgs e)
{
    (new Form3()).Show();
    this.Hide();
}

Если он не в той же форме, вам понадобится ссылка на форму, которую вы хотите скрыть:

private Form2 form2 = new Form2();
private Form3 form3 = new Form3();
form2.Show();

private void button1_Click(object sender, EventArgs e)
{
   form2.Hide();
   form3.Show();
}
0 голосов
/ 16 июня 2011

Вы не можете создать новый экземпляр Form2 и ожидать, что существующая Form2 будет скрыта. Сохраните существующую форму Form2 в переменной экземпляра вашего класса и вызовите Hide () для этого экземпляра.

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