вернуться к предыдущей форме (c #) - PullRequest
1 голос
/ 07 июня 2011

Я знаю, как перейти в другую форму в модальном режиме, точно так же, как я делал ниже:

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

    Form2 myNewForm = new Form2();
    private void button1_Click(object sender, EventArgs e)
    {
        this.Hide();
        myNewForm.ShowDialog();


    }
}

Это моя вторая форма, как мне вернуться к предыдущей форме?

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

    private void Form2_Load(object sender, EventArgs e)
    {

    }
    private void button1_Click(object sender, EventArgs e)
    {
        this.Hide();
        // what should i put here to show form1 again
    }

}

Ответы [ 2 ]

9 голосов
/ 07 июня 2011

Когда вы вызываете ShowDialog в форме, она запускается до тех пор, пока форма не будет закрыта, для свойства DialogResult формы будет установлено значение, отличное от None, или дочерняя кнопка со свойством DialogResult, отличным от None нажата. Так что вы могли бы сделать что-то вроде

public partial class Form1
{
    ...
    private void button1_Click(object sender, EventArgs e)
    {
        this.Hide();
        newform.ShowDialog();
        // We get here when newform's DialogResult gets set
        this.Show();
    }
}

public partial class Form2
{
    ...
    private void button1_Click(object sender, EventArgs e)
    {
        // This hides the form, and causes ShowDialog() to return in your Form1
        this.DialogResult = DialogResult.OK;
    }
}

Хотя если вы ничего не делаете, а только возвращаетесь из формы при нажатии кнопки, вы можете просто установить свойство DialogResult для Form2.button1 в конструкторе форм, и вам не понадобится обработчик событий в Form2 вообще.

0 голосов
/ 07 июня 2011

Я использую статическое значение формы Текущий во всех моих приложениях с несколькими формами.

public static Form1 Current;

public Form1()
{
    Current = this;

    // ... rest of constructor
}

Затем в Форме2

public static Form2 Current;

public Form2()
{
    Current = this;

    // ... rest of constructor
}

Затем вы можете с помощью нажатия кнопки сделать,

private void button1_Click(object sender, EventArgs e)
{
    this.Hide();
    // what should i put here to show form1 again
    Form1.Current.ShowDialog(); // <-- this
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...