Используйте метод после закрытия формы в C # - PullRequest
0 голосов
/ 05 июля 2018

Я хочу вызвать метод в моем классе form1.cs после закрытия form2.cs

Form1:

private void button1_Click(object sender, EventArgs e)
{
  var form2= new form2();
  form2.Show(); 
}

public void Form1Refresh()
{
  //some code 
}

form2:

private void button1_Click(object sender, EventArgs e)
{
  ...

  Close();

  //call refresh from form1

}

Как я могу использовать метод Refresh () после закрытия формы? Я пробую это с new form1 и вызываю функцию, но она использует новый объект и не работает.

Должен ли я передать объект form1 в form2 и использовать его или есть другое решение?

Ответы [ 4 ]

0 голосов
/ 05 июля 2018

попробуйте этот код

form1:

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

 public void Form1Refresh()
        {
           ///////

        }

Form2:

 public Form1 f1;
        public Form2(Form1 m)
        {
          this.f1 = m;
            InitializeComponent();
        }


 private void button1_Click(object sender, EventArgs e)
        {
            this.Close();
            f1.Form1Refresh();     

        }
0 голосов
/ 05 июля 2018

Этот вопрос, вероятно, является дубликатом.

Вы можете перехватить событие FormClosed при создании Form2 при нажатии кнопки в Form1

        var form2 = new Form2();
        form2.Show();
        form2.FormClosed += (sender, eventArgs) => { Refresh(); };

Windows Forms уже содержат метод с именем Refresh, вы намеревались скрыть метод от базового класса? Я бы предложил дать ему другое имя или, по крайней мере, вызвать base.Refresh(); из вашего метода.

0 голосов
/ 05 июля 2018

Попробуйте вызвать MainWindow и разобрать его в Form1.

Окно окна = Application.Current.MainWindow;

((Form1) окно) .refresh ();

0 голосов
/ 05 июля 2018

Когда вы создаете и показываете Form2 обрабатываете его FormClosed событие.

private void button1_Click(object sender, EventArgs e)
{
    var form2 = new Form2();
    form2.FormClosed += form2_FormClosed; // This Line
    form2.Show();
}

void form2_FormClosed(object sender, FormClosedEventArgs e)
{
    Debug.Print("Form 2 has been closed. Call the Refresh Action");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...