Лучше всего перегрузить метод Show
для каждой из ваших форм, чтобы принять что-то вроде параметра "предыдущая форма", который будет служить ссылкой на вызывающего (вы могли бы сделать это либо как Form
объект, к свойствам которого вы затем можете получить доступ, либо просто как String
). Затем, где бы вы ни отображали вторую форму из существующей формы, вы передаете информацию о существующей форме в метод Show
для второй формы. Метод Show
второй формы позаботится об обновлении текстового поля именем формы, которая его отображает.
Например, каждая форма будет содержать перегруженный Show
метод:
public void Show(Form previousForm)
{
//Set the textbox on this form to contain the name of the calling form
myTextBox.Text = previousForm.Name;
//Call the base class's method to show this form
base.Show();
}
И вы бы показывали одну форму из другой, вызывая ее перегруженный Show
метод:
private void ShowOtherFormButton(object sender, EventArgs e)
{
//Create a new instance of the form you want to display
Form2 myOtherForm = new Form2();
//Show the other form, passing the calling form as a parameter
myOtherForm.Show(this);
}
Таким образом, ни одна форма не отвечает и даже не может обновлять элементы управления, содержащиеся в другой форме. Вам не нужно открывать какие-либо дополнительные свойства или не забывать вызывать любые дополнительные методы в формах, которые вы хотите показать - он встроен прямо в метод Show
, который вам все равно придется вызывать.
Кроме того, вы можете перегрузить конструктор каждой формы одинаково, но это не сработает, если вы захотите перемещаться между существующими экземплярами каждой формы. Вы сможете указать информацию о предыдущей форме только при создании нового экземпляра каждой формы.