Может ли Вторая форма изменить текст Первой формы?

#c# #winforms

Вопрос:

Моя форма 2 открывается формой 1, вот так:

 Form2 fm2 = new Form2();

fm2.Show();
 

Итак, теперь моя форма 2 может изменить текст в текстовом поле текущей формы 1?

Я попытался использовать следующее:

 Form1 fm1 = new Form1();

fm1.textBox_A.Text = "123";
 

Но это не работает.

Комментарии:

1. Добро пожаловать в SO! Вы создаете новый экземпляр Form1, но вам необходимо передать существующий экземпляр в frm2.

Ответ №1:

О, я просто нашел способ делать то, что хочу.

для формы 2:

 Form1 fm1;
public Form2(Form1 _Form1)
    {
        fm1 = _Form1;
        InitializeComponent();
        ...
    }
 

Затем форма1:

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

    public string ChangeText
    {
        get { return this.textBox_A.Text; }
        set
        {
            this.textBox_A.Text = value;
        }
    }
 

Итак, теперь я могу использовать следующее в форме 2, чтобы изменить текст в текущей форме 1 на форму 2:

 fm1.ChangeText= "YAAAAAAAAAAAAAAAA";
 

Ответ №2:

на первом шаге вы должны добавить новый конструктор в Form2

 System.Windows.Forms.Form fm1;
public Form2(System.Windows.Forms.Form frm1)
{
    this.fm1 = frm1;
    InitializeComponent();
} 
 

тогда просто напиши это

 fm1.textBox_A.Text = "123";