Выполнять метод Form2 в Form2 всякий раз, когда значение текстового поля Form1 изменяется

Я хочу, чтобы «детская» форма из моей «основной формы» обновлялась всякий раз, когда моя основная форма что-то меняет, давайте проясним это на примерах:

Моя "детская" форма:

  public partial class Ventoemparedes : Form
{
    private Form1 Opener { get; set; }


    public Ventoemparedes(Form1 opener)
    {
      Initializecomponent();

      //stuff i wanna do whenever Form1 textBox.Text changes
      method1();
    }

    private void method1()
    { //does stuff
    }
}

Моя основная форма:

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

   private void textBox1_TextChanged(object sender, EventArgs e)
    {
        //execute method1 on Ventoemparedes somehow???
    }

    private void button1_Click(object sender, EventArgs e)
    {

        Ventoemparedes mostra = new Ventoemparedes(this);
        mostra.ShowDialog();

    }
}

На Form1 у меня есть button и textBox. button показывает окно Form2. Что я хочу сделать, так это то, что всякий раз, когда значение Form1 textBox изменяется, method, написанное в Form2, будет выполняться и, таким образом, обновлять мое окно Form2.

Он должен вести себя как «обновление».

Возможно ли такое хотя бы отдаленно?

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


person ng80092b    schedule 22.04.2015    source источник
comment
Поднять событие в одной форме и подписаться на него в другой   -  person Sandeep Singh Rawat    schedule 22.04.2015
comment
Инструкция непонятная,   -  person ng80092b    schedule 22.04.2015


Ответы (1)


  1. #P1# <блочная цитата> #P2#
  2. #P3# <блочная цитата> #P4#
  3. #P5# <блочная цитата> #P6#
person Nikola Mitev    schedule 22.04.2015
comment
Я удивлен получить ответ :) Спасибо. Что-то не так, потому что выдает необработанную ошибку :( puu.sh/hmSq1/48dcd2b983.jpg Ссылка на объект не указывает на экземпляр объекта. В любом случае спасибо за ответ :) Это происходит, если я изменяю значение textBox, не открывая дочернюю форму. Если бы я открыл его, ошибка была бы другой, она указывала бы мне на mostra.TextBoxFromMainChange(); и говорила бы Object reference not set to an instance of an object. Use the "new" keyword to create a object instance. - person ng80092b; 22.04.2015
comment
@ ng80092b Да, вы сказали, что хотите открыть детскую форму при нажатии кнопки 1, поэтому вы получите исключение нулевой ссылки, если вы введете текстовое поле, не открывая форму. Как предотвратить это? В текстовом поле сначала проверьте, не является ли переменная 'mostra' нулевой, а затем вызовите Mostra.TextBoxFromMainChange(); 'if(Mostra !=null) { Mostra.TextBoxFromMainChange(); }' - person Nikola Mitev; 22.04.2015
comment
@ng80092b поставьте точку останова на Mostra.TextBoxFromMainChange() и проверьте свойства объекта Mostra. - person Nikola Mitev; 22.04.2015
comment
Я ценю ваши усилия, и я уверен, что это близко к решению, но что-то не так с этим кодом, я изменил свой метод1, чтобы просто показать приветствие MessageBox, и он работает на Form2, терпит неудачу, когда я меняю текстовое поле Форма1 - person ng80092b; 22.04.2015
comment
Это решено @Nikola Mitev, проблема в том, что я создавал новый экземпляр при нажатии кнопки 1. Что мне нужно было сделать, так это установить mostra, который ранее был определен выше Form1, как mostra = new Ventoemparedes(this); - person ng80092b; 22.04.2015